1

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 )
4

1 に答える 1

1

Build.py を呼び出して、スクリプトをパラメーターとして渡しているように見えます。これをテストして何が起こるかを確認したところ、投稿したのと同じ出力が得られました。

現在の安定版 PyInstaller (1.5.1) では、最初にスペック ファイルを作成する必要があります。Build.py の代わりに、スクリプトを引数として MakeSpec.py を実行します。これにより、Build.py に送信する .spec ファイルが作成されます。

ドキュメントには、Windows でのアイコンの設定や展開オプションの設定などのために、MakeSpec に渡すことができるオプションが示されています。これらのオプションはすべてスペック ファイルに含まれるため、アプリケーションを再構築する必要がある場合は Build.py を再度呼び出すだけで済みます。

于 2012-06-13T07:51:11.760 に答える