pyinstallerを使用してPythonコードを実行可能ファイルに変換しようとすると問題が発生します。PyQT4.9.1とPython2.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 )