2011-01-07 6 views
3

Ich mache eine Anwendung in Python mit PySide und Qt, und ich muss eine Webseite öffnen, so dass ich QtWebKit QWebView verwendet.Verwendung von PySide QtWebKit unter Windows mit py2exe

Auf meiner Entwicklungsmaschine funktioniert es gut, sowohl den Code direkt ausführen und die Ausgabe von py2exe ausführen. Auf einem "sauberen" Rechner (kein Python und kein Qt installiert) zeigt die Ausgabe von py2exe die Webseite nicht an. Der Rest der Anwendung funktioniert gut und es gibt keinen Absturz oder Ausnahme, aber das QWebView bleibt leer.

Ich habe versucht, eine URL ohne Bilder oder andere Sachen zu öffnen, um Probleme im Zusammenhang mit fehlenden WebKit-Plugins zu verhindern. Ich versuchte auch ein einfaches Programm, das nur example.com auf einem QWebView und sonst nichts öffnet, und es hat auch nicht funktioniert.

Hat jemand Ähnliches gefunden? Außerdem weiß jemand, ob QWebKit irgendwelche "weniger dokumentierten" Abhängigkeiten hat, die py2exe möglicherweise nicht in das "Paket" zieht.

+0

Was ist eine „fast clean“ Maschine und keinen py2exe? Welche Version von Windows? Hast du es mit statischem Inhalt versucht (Datei: /// ...)? – Apalala

Antwort

2

Ich würde PyInstaller versuchen. Es scheint gut zu funktionieren, wenn PyQT-Sachen kompiliert werden, da es Abhängigkeiten schnüffelt und sie auch packt (gut scheint es das zu tun). Ich machte auch eine QT-Anwendung mit Python, und es spuckte eine einzelne Binärdatei aus, die auf Anhieb funktionierte.

Hier ist ein Link: http://www.pyinstaller.org/

Viel Glück!

+0

+1 für pyinstaller, da es im Allgemeinen einen besseren Job beim Packen von regulärem PyQt macht. Ihre Laufleistung kann unter Berücksichtigung der PySide Bindungen variieren, aber es ist definitiv einen Versuch wert. – ChristopheD

+0

Antwort akzeptiert, weil, obwohl PyInstaller hatte das gleiche Problem wie py2exe, es war viel hilfreicher, mir zu helfen, das eigentliche Problem aufzuspüren: fehlende OpenSSL-Bibliotheken. Gelöst durch Kopieren der DLL-Dateien in das Basisverzeichnis des Ausgabeverzeichnisses py2exe (oder PyInstaller). Mehr Infos hier: http://codeblog.vurdalakov.net/2009/11/solution-qsslsocket-cannot-call.html – jvale

+0

Ich dachte, dass es in Windows und Linux genauso funktioniert, aber manuelle Abhängigkeiten funktionieren auch;) – Blender

1

die Sie interessieren in py2exe Optionen:

packages = ["PySide.QtNetwok"] 
1

gewählte Antwort beantwortet nicht wirklich die Frage. Ich hatte ein ähnliches Problem, meine Anwendung verwendet pyside und QtWebKit, auf meinem Dev-Rechner hat gut funktioniert, auf dem Benutzer-Rechner nach gebündelt mit py2exe nicht.

allererst Ihre setup.py sollte explizit enthalten PySide.QtNetwork: link

... 
setup(
    ... 
    options = { 
     'py2exe': { 
      ... 
      'includes': ['PySide.QtNetwork'], 
      ... 
     } 
    } 
... 

nach, dass Sie sollten openSSL DLLs Paket: link

here gehen und win32openssl (Sie das Licht verwenden Version) Kopieren Sie libeay32.dll und ssleay32.dll in Ihren Projektordner und fügen Sie beides als Datendateien in Ihrem setup.py wie folgt hinzu:

... 
setup(data_files=[('', ['libeay32.dll','ssleay32.dll'])], 
... 

und schließlich müssen Sie Bild Unterstützung hinzufügen: die Bild Plugins als Datendateien hinzufügen, am Ende ist es so etwas wie dies sein sollte:

... 
setup(data_files=[("imageformats", glob(r'C:\Python27\Lib\site-packages\PySide\plugins\*.*')),('', ['libeay32.dll','ssleay32.dll'])], 
...