使用pyinstaller打包:未找到PyQt4模块

3 投票
1 回答
3650 浏览
提问于 2025-04-17 15:29

大家好,感谢你们的阅读。我正在用pyinstaller把我的Python代码打包成一个文件,但当我运行这个打包好的文件时,出现了以下错误:

Traceback (most recent call last):
File "<string>", line 21, in <module>
File "C:\Users\****\Desktop\pyinstaller-2.0\pyinstaller-2.0\PyInstaller\loader\iu.py", line 409, in importHook
ImportError: No module named PyQt4.QtCore

我不知道这个错误是什么意思,尤其是因为我的桌面上没有名为pyinstaller-2.0的文件夹,而且我根本没有使用PyQt4。

我导入的模块有:Tkinter, tkFileDialog, tkMessageBox, multiprocessing, os, sys, time, numpy, scipy.weave, pywt, matplotlib.pyplot

我觉得问题可能和multiprocessing有关,因为我之前没有遇到过这个错误。我使用了这个方法来正确实现multiprocessing模块。

1 个回答

3

如果你在使用 PyQt,那么用 PyInstaller 导入模块的唯一方法就是使用

 from PyQt4 import QtCore, QtGui

而不是

 import PyQt4.QtCore, PyQt4.QtGui

这正是你错误提示的意思。不过,你说你并没有使用 PyQt

PyQtmatplotlib 的一个可选依赖项,所以 PyInstaller 可能在检查 matplotlib 模块时,顺便把 PyQt 也包含进来了。

我建议你在构建时排除 PyQt 模块;在你的 .spec 文件中,找到 Analysis 类的那一行,类似于

Analysis( ..., excludes=['PyQt4', 'PyQt4.QtCore', 'PyQt4.QtGui'])

然后按照上面的建议修改 excludes 这个关键字参数。

撰写回答