我正在尝试使用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_())
有没有人有任何想法?
答案 0 :(得分:6)
适合我的工作(Windows 7x64bit,Python 2.7x32bit)只需将QT目录添加到您的系统路径或使用p
选项将其添加到命令行:
PyInstaller -y -F --distpath="." -p "C:\Python27\Lib\site-packages\PyQt4" test.py
如果您从可执行文件中安装PyQt,它会自动为您完成所有这些操作:
答案 1 :(得分:3)
1,Pyinstaller不会创建--onefile甚至小于--onedir。当你运行--onefile时,它只是创建一个包装器,将dir中的所有内容提取到一个临时目录然后运行它。
2,Pyinstaller不支持import PyQt4.QtCore, PyQt4.QtGui
,from PyQt4 import QtCore, QtGui
是here唯一支持的方式。
3,你的PyQt4的版本是什么?是Riverbank安装人员的GPL版本吗?
4,您是否正确地按照步骤操作?例如Makespec.py
然后Build.py
?
答案 2 :(得分:0)
我在pyinstaller 3.4(python 3.6,PyQt5)上也遇到了同样的问题,最后通过改编here和here中的解决方案使其正常工作。
方法总结:
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
希望这会有所帮助!