Использование PySide QtWebKit под Windows с py2exe

Я делаю приложение на Python, используя PySide и Qt, и мне нужно открыть веб-страницу, поэтому я использовал QWebView QtWebKit.

На моем компьютере для разработки он работает отлично, как напрямую, так и с выводом py2exe. На «чистой» машине (без Python и Qt) вывод py2exe не показывает веб-страницу. Остальная часть приложения работает нормально, без сбоев или исключений, но QWebView просто остается пустым.

Я попытался открыть URL-адрес без изображений или других материалов, чтобы предотвратить любые проблемы, связанные с отсутствующими плагинами WebKit. Я также попробовал простую программу, которая просто открывает example.com в QWebView и больше ничего, и она тоже не работает.

Кто-нибудь сталкивался с чем-то подобным? Кроме того, кто-нибудь знает, есть ли у QWebKit какие-либо «менее документированные» зависимости, которые py2exe может не включать в «пакет»?


person jvale    schedule 07.01.2011    source источник
comment
Как насчет почти чистой машины и без py2exe? Какая версия Windows? Вы пробовали со статическим содержимым (file:///...)?   -  person Apalala    schedule 07.01.2011


Ответы (4)


Я бы попробовал PyInstaller. Кажется, он хорошо работает при компиляции материала PyQT, так как он обнюхивает зависимости и также упаковывает их (ну, похоже, он это делает). Я тоже делал QT-приложение с Python, и оно выдало один бинарный файл, который сразу заработал.

Вот ссылка: http://www.pyinstaller.org/

Удачи!

person Blender    schedule 07.01.2011
comment
+1 за pyinstaller, поскольку он обычно лучше справляется с упаковкой обычного PyQt. Ваш пробег может варьироваться в зависимости от привязок PySide, но попробовать определенно стоит. - person ChristopheD; 08.01.2011
comment
Ответ принят, потому что, хотя у PyInstaller была та же проблема, что и у py2exe, он был намного полезнее, помогая мне отследить реальную проблему: отсутствующие библиотеки OpenSSL. Решается путем копирования файлов dll в базовый каталог выходного каталога py2exe (или PyInstaller). Дополнительная информация здесь: codeblog.vurdalakov.net/2009/11/ - person jvale; 10.01.2011
comment
Я думал, что это работает одинаково в Windows и Linux, но ручные зависимости тоже работают ;) - person Blender; 10.01.2011
comment
Вы пробовали cxfreeze - кажется, это рекомендуется группой pyside. cx-freeze.sourceforge.net - person Neon22; 14.01.2011

Для тех, у кого все еще будут проблемы с этим, вот вам:

http://developer.qt.nokia.com/wiki/Packaging_PySide_applications_on_Windows

Вам нужно включить его вручную со стороны py2exe :)

person kkszysiu    schedule 20.04.2011
comment
Да, я был тем, кто разместил это на вики. ^^ - person jvale; 21.04.2011

Попробуйте это в параметрах py2exe:

packages = ["PySide.QtNetwok"]
person Cristian Echeverria    schedule 29.04.2011

выбранный ответ на самом деле не отвечает на вопрос. У меня была аналогичная проблема, мое приложение использует pyside и QtWebKit, на моей машине-разработчике все работало нормально, на пользовательской машине после сборки с py2exe - нет.

во-первых, ваш setup.py должен явно включать PySide.QtNetwork: ссылка

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

после этого вы должны упаковать библиотеки DLL openSSL: ссылка

перейдите здесь и получите win32openssl (вы можете использовать облегченную версию) скопируйте libeay32.dll и ssleay32 .dll в папку вашего проекта и добавьте оба как файлы данных в ваш setup.py следующим образом:

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

и, наконец, вам нужно добавить поддержку изображений: добавьте плагины изображений в виде файлов данных, в конце должно быть что-то вроде этого:

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