cx_freeze QtWebKit 导入错误

Posted

技术标签:

【中文标题】cx_freeze QtWebKit 导入错误【英文标题】:cx_freeze QtWebKit import error 【发布时间】:2012-08-11 14:21:23 【问题描述】:

在我将一个 QWebView 元素添加到窗口之前,我的 cx_freeze 构建工作正常。这意味着我应该导入 QtWebKit,对吗?在 Linux 上一切正常。在 Windows 上,如果我运行 main.py 文件,一切正常。

如果我将其冻结为 .exe,则为 error I get 。这是我的 install.py 文件:

from cx_Freeze import setup, Executable

includes=["re","PyQt4.QtWebKit"]

exe = Executable(
    script="main.pyw",
    base="Win32GUI",
    targetName = "LEX.exe"
    )

setup(
    name = "blabla",
    version = "1.3",
    description = "My application",
    options = "build_exe": "includes":includes,
    executables = [exe]
    )

我在 x64 Windows 7 上构建它,但使用 x86 版本的 PyQt4 和 Python3.2 x86。在那个 QWebView 元素之前完全没有问题。

【问题讨论】:

你有什么版本的 PyQt4?显然有a problem like this that was fixed in 4.8.4。另外,如果您还没有最新版本的 cx_Freeze,您可以尝试更新它。 PyQt 的 Linux 和 Windows 版本都是 4.9.4,cx_freeze 版本是 4.2.3。谢谢你的回答。 请注意,您可以尝试更新版本的 cx_Freeze (4.3)。如果这不起作用,您可以尝试询问cx_Freeze mailing list。 您的回答帮助了我。我安装了 cx_freeze 4.3 并稍微编辑了导入,这也是需要的。导入现在是这样的: from PyQt4.QtNetwork import * from PyQt4.QtWebKit import QWebView,QWebPage 并且可以正常工作:) 再次感谢。 不客气。 *** 应该让你发布并接受你自己的答案,所以很明显问题已经解决了。 【参考方案1】:

升级到 cx_freeze 4.3 并编辑导入就可以了。导入现在是这样的:

from PyQt4.QtNetwork import *
from PyQt4.QtWebKit import QWebView,QWebPage

【讨论】:

也得到了“没有名为 QtNetwork 的模块”。添加“from PyQt4.QtNetwork import *”,就可以了!【参考方案2】:

您不应仅仅为了让 cx_Freeze 识别依赖关系而添加导入(并可能污染您的命名空间)。 而是像使用 PyQt4.QtWebKit 一样将 PyQt4.QtNetwork 添加到“包含”列表中。 您还可以使用“包”选项包含包的所有模块。也就是说,“包”是指整个包,“包含”是指模块。

【讨论】:

以上是关于cx_freeze QtWebKit 导入错误的主要内容,如果未能解决你的问题,请参考以下文章

在 Mac 10.11 上使用 QT 5.6 构建 QtWebKit

Private Headers 问题针对 Qt 5.10.1 编译 QtWebKit 5.212

cx_freeze 将项目构建为 .exe 文件,出现 numpy 导入错误

在 Windows 7 上安装 Qt 4.8.3 & QtWebkit 问题

PySide 和 QtWebKit:找不到模块

实现js与Qt程序的交互(使用QtWebkit)