Utilizzando QtWebKit di PySide sotto Windows con py2exe
Domanda
sto facendo un programma in Python utilizzando PySide e Qt, e ho bisogno di aprire una pagina web, quindi ho usato QWebView di QtWebKit.
Sulla mia macchina di sviluppo funziona bene, sia in esecuzione il codice direttamente e in esecuzione l'uscita di py2exe. Su una macchina "pulita" (senza Python e Qt non installato), l'uscita di py2exe non mostra la pagina web. Il resto dell'applicazione funziona bene e non c'è alcun incidente o eccezione, ma la QWebView appena rimane vuota.
Ho provato ad aprire un URL senza immagini o altre cose per evitare eventuali problemi legati ai plugin WebKit mancanti. Ho provato anche un semplice programma che si apre solo example.com su un QWebView e nient'altro, e, inoltre, non ha funzionato.
Qualcuno ha incontrato qualcosa di simile? Inoltre, qualcuno sa se QWebKit ha alcun tipo di dipendenze "meno documentati", che py2exe potrebbe prelevare nel "pacchetto"?
Soluzione
Vorrei provare PyInstaller. Sembra funzionare bene durante la compilazione PyQT roba, come si annusa le dipendenze e li pacchetti di troppo (beh, sembra di farlo). Stavo facendo un'applicazione QT con Python troppo, e sputare fuori un singolo binario che ha lavorato destra fuori del blocco.
Ecco un link: http://www.pyinstaller.org/
In bocca al lupo!
Altri suggerimenti
Per chi avrà ancora qualche problema con esso, ci si va:
http://developer.qt.nokia.com/wiki/Packaging_PySide_applications_on_Windows
È necessario includere manualmente dalla parte py2exe:)
Prova questo nelle opzioni py2exe:
packages = ["PySide.QtNetwok"]
risposta scelta in realtà non rispondere alla domanda. Ho avuto un problema simile, i miei usi applicativi PySide e QtWebKit, sulla mia macchina dev funzionava bene, sulla macchina dell'utente dopo bundle con py2exe non ha fatto.
prima di tutto il vostro setup.py dovrebbe esplicitamente includere PySide.QtNetwork: link
...
setup(
...
options = {
'py2exe': {
...
'includes': ['PySide.QtNetwork'],
...
}
}
...
dopo che si dovrebbe pacchetto OpenSSL DLL: collegamento
qui e get win32openssl (è possibile utilizzare la versione leggera) copiare libeay32.dll e ssleay32.dll alla cartella del progetto e aggiungere sia come come file di dati nel vostro setup.py in questo modo:
...
setup(data_files=[('', ['libeay32.dll','ssleay32.dll'])],
...
e, infine, è necessario aggiungere il supporto delle immagini: aggiungere i plugin per le immagini come file di dati, alla fine dovrebbe essere qualcosa di simile:
...
setup(data_files=[("imageformats", glob(r'C:\Python27\Lib\site-packages\PySide\plugins\*.*')),('', ['libeay32.dll','ssleay32.dll'])],
...