Python PyQT/Windows/Pyinstaller(exe)-name错误:全局名称';QtGui';没有定义

Python PyQT/Windows/Pyinstaller(exe)-name错误:全局名称';QtGui';没有定义,python,pyqt,pyinstaller,Python,Pyqt,Pyinstaller,我在尝试使用pyinstaller将python代码转换为可执行文件时遇到问题。我正在使用PyQt4.9.1和Python2.7 当我尝试构建它时,我得到了错误(build.py): 这是Makespec.py文件: # -*- mode: python -*- a = Analysis([os.path.join(HOMEPATH,'support\\_mountzlib.py'), os.path.join(HOMEPATH,'support\\useUnicode.py'), 'c:\\p

我在尝试使用pyinstaller将python代码转换为可执行文件时遇到问题。我正在使用PyQt4.9.1和Python2.7

当我尝试构建它时,我得到了错误(build.py):

这是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 )

在我看来,您正在调用Build.py并将脚本作为参数传递。我只是测试了一下,看看会发生什么,得到了与您发布的相同的输出

使用当前稳定的PyInstaller(1.5.1),您需要。使用脚本作为参数运行MakeSpec.py,而不是Build.py。这将创建一个.spec文件,然后将其发送到Build.py


文档显示了可以传递给MakeSpec的选项,例如在Windows下设置图标和设置部署选项。这些选项都会进入spec文件,因此当您需要重建应用程序时,只需再次调用Build.py。

在我看来,您正在调用Build.py并将脚本作为参数传递。我只是测试了一下,看看会发生什么,得到了与您发布的相同的输出

使用当前稳定的PyInstaller(1.5.1),您需要。使用脚本作为参数运行MakeSpec.py,而不是Build.py。这将创建一个.spec文件,然后将其发送到Build.py


文档显示了可以传递给MakeSpec的选项,例如在Windows下设置图标和设置部署选项。这些选项都会进入spec文件,因此当您需要重建应用程序时,只需再次调用Build.py。

我在Build.py之前使用Makespec.py,如果我遗漏了太多信息,很抱歉。您是否在Makespec.py创建的.spec文件上运行Build.py?当然可以。我将在Makespec.py文件中进行编辑,我有一种感觉,可能是我输入了错误的内容,使其无法找到pyqt模块。啊,我误解了您的要求,我在普通python文件上运行build。很抱歉,我最近脑子不太好用!感谢您的帮助。我在Build.py之前使用了Makespec.py,如果我遗漏了太多信息,很抱歉。您是否在Makespec.py创建的.spec文件上运行Build.py?当然可以。我将在Makespec.py文件中进行编辑,我有一种感觉,可能是我输入了错误的内容,使其无法找到pyqt模块。啊,我误解了您的要求,我在普通python文件上运行build。很抱歉,我最近脑子不太好用!谢谢你的帮助。
#!/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_())
# -*- 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 )