在Windows下通过py2exe使用PySide的QtWebKit

问题描述 投票:0回答:5

我正在使用PySide和Qt在Python中制作一个应用程序,我需要打开一个网页,所以我使用了QtWebKit的QWebView。

在我的开发机器上它工作得很好,既可以直接运行代码,也可以运行 py2exe 的输出。在“干净”的机器上(没有安装 Python 和 Qt),py2exe 的输出不会显示网页。应用程序的其余部分工作正常,没有崩溃或异常,但 QWebView 只是保持空白。

我尝试打开一个没有图像或其他内容的 URL,以防止与缺少 WebKit 插件相关的任何问题。我还尝试了一个简单的程序,只在 QWebView 上打开 example.com,没有其他任何东西,它也不起作用。

有人遇到过类似的事情吗?另外,任何人都知道 QWebKit 是否有任何类型的“记录较少”的依赖项,py2exe 可能不会将其拉入“包”中?

python qt py2exe qtwebkit pyside
5个回答
2
投票

我会尝试 PyInstaller。它在编译 PyQT 内容时似乎工作得很好,因为它会嗅探依赖项并打包它们(嗯,它似乎就是这样做的)。我也在用 Python 制作一个 QT 应用程序,它生成了一个可以立即运行的二进制文件。

这是一个链接:http://www.pyinstaller.org/

祝你好运!


2
投票

对于仍然遇到麻烦的人,请看:

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

您需要从 py2exe 端手动包含它:)


1
投票

在 py2exe 选项中尝试一下:

packages = ["PySide.QtNetwok"]

1
投票

选择的答案实际上并没有回答问题。我遇到了类似的问题,我的应用程序使用 pyside 和 QtWebKit,在我的开发机器上工作正常,在与 py2exe 捆绑后在用户机器上却没有。

首先,你的 setup.py 应明确包含 PySide.QtNetwork:link

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

之后你应该打包 openSSL DLL:link

这里并获取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'])],
...

0
投票

您可以查看以下包https://nuitka.net/ PySide6 开发人员推荐它来捆绑基于 PySide 的应用程序

© www.soinside.com 2019 - 2024. All rights reserved.