我试图使用pyinstaller将我的python代码转换为可执行文件时遇到问题。我使用的是PyQT 4.9.1和Python 2.7。
我在尝试构建它时遇到错误(Build.py):
Traceback (most recent call last):
File "Build.py", line 1494, in <module>
main(args[0], configfilename=opts.configfile)
File "Build.py", line 1472, in main
build(specfile)
File "Build.py", line 1429, in build
execfile(spec)
File "c:\projects\vibot\vibotUI_07.py", line 270, in <module>
window = viUI()
File "c:\projects\vibot\vibotUI_07.py", line 9, in __init__
QtGui.QMainWindow.__init__(self)
NameError: global name 'QtGui' is not defined
我搜索过谷歌,所有的解决方案都是基于纠正模块的不正确导入,但我已经开始正确地做了。
以下是我的代码的裁剪版本:
#!/usr/bin/env python
import sys
import os
from PyQt4 import QtCore, QtGui
class viUI(QtGui.QMainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self)
self.setWindowTitle('test')
self.setObjectName('viMainWindow')
self.resize(400, 600)
self.show()
app = QtGui.QApplication(sys.argv)
window = viUI()
sys.exit(app.exec_())
这是Makespec.py文件:
# -*- mode: python -*-
a = Analysis([os.path.join(HOMEPATH,'support\\_mountzlib.py'), os.path.join(HOMEPATH,'support\\useUnicode.py'), 'c:\\projects\\vibot\\vibotUI_07.py'],
pathex=['c:\\Python\\pyinstaller-1.5.1\\pyinstaller-1.5.1'])
pyz = PYZ(a.pure)
exe = EXE( pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
name=os.path.join('dist', 'vibotUI_07.exe'),
debug=False,
strip=False,
upx=True,
console=True )
答案 0 :(得分:1)
在我看来,你正在调用Build.py并将脚本作为参数传递。我刚测试了这个,看看会发生什么,并得到你发布的相同输出。
使用当前稳定的PyInstaller(1.5.1),您需要create a spec file first。而不是Build.py运行MakeSpec.py与您的脚本作为参数。这将创建一个.spec文件,然后您将其发送到Build.py。
该文档显示了可以传递给MakeSpec的选项,例如在Windows下设置图标和设置部署选项。这些选项都会进入spec文件,因此您只需在需要重建应用程序时再次调用Build.py.