尝试构建--onefile时PyInstaller与PyQt的错误

时间:2011-12-18 00:08:09

标签: python pyqt pyinstaller

我正在尝试使用PyInstaller 1.5编译PyQt程序。当我使用--onedir(默认值)时,以下两个程序都可以正常工作,但这会创建相当大的程序。我想使用--onefile选项,但是当我运行创建的onefile应用程序时,我收到错误:

Traceback (most recent call last):
  File "<string>", line 11, in <module>
  File "pyinstaller/PyInstaller/loader/iu.py", line 468, in importHook
raise ImportError("No module named %s" % fqname)
ImportError: No module named PyQt4.QtCore

这两个都发生了这个错误:

import sys 
from PyQt4 import QtCore, QtGui 

app =QtGui.QApplication(sys.argv) 
window =QtGui.QMainWindow() 
window.setCentralWidget(QtGui.QLabel("Hello")) 
window.show() 
sys.exit(app.exec_()) 

和此:

import sys
import PyQt4.QtCore, PyQt4.QtGui 

app = PyQt4.QtGui.QApplication(sys.argv) 
window = PyQt4.QtGui.QMainWindow() 
window.setCentralWidget(PyQt4.QtGui.QLabel("Hello")) 
window.show() 
sys.exit(app.exec_()) 

有没有人有任何想法?

3 个答案:

答案 0 :(得分:6)

适合我的工作(Windows 7x64bit,Python 2.7x32bit)只需将QT目录添加到您的系统路径或使用p选项将其添加到命令行:

PyInstaller -y -F --distpath="." -p "C:\Python27\Lib\site-packages\PyQt4" test.py

如果您从可执行文件中安装PyQt,它会自动为您完成所有这些操作:

http://sourceforge.net/projects/pyqt/files/

答案 1 :(得分:3)

1,Pyinstaller不会创建--onefile甚至小于--onedir。当你运行--onefile时,它只是创建一个包装器,将dir中的所有内容提取到一个临时目录然后运行它。

2,Pyinstaller不支持import PyQt4.QtCore, PyQt4.QtGuifrom PyQt4 import QtCore, QtGuihere唯一支持的方式。

3,你的PyQt4的版本是什么?是Riverbank安装人员的GPL版本吗?

4,您是否正确地按照步骤操作?例如Makespec.py然后Build.py

答案 2 :(得分:0)

我在pyinstaller 3.4(python 3.6,PyQt5)上也遇到了同样的问题,最后通过改编herehere中的解决方案使其正常工作。

方法总结:

1)运行“ pip install pip == 18.1”。尽管还存在更新的版本,但使用版本18.1至关重要。完成此过程后,您可以通过“ pip install pip --upgrade”升级pip

2)安装pyinstaller开发版本:“ pip install https://github.com/pyinstaller/pyinstaller/archive/develop.tar.gz

3)正常运行pyinstaller

希望这会有所帮助!