2012-06-12 3 views
1

Pyinstaller를 사용하여 Python 코드를 실행 파일로 변환하는 데 문제가 있습니다. 저는 PyQT 4.9.1과 Python 2.7을 사용하고 있습니다. 나는 구글을 검색 한 모든 솔루션은 모듈의 부적절한 수입을 보정을 기반으로PyQT/Windows/Pyinstaller (exe) - NameError : 전역 이름 'QtGui'이 정의되지 않았습니다.

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 

, 그러나 나는 이미 그것을했다 :

내가 시도를 빌드 할 때 나는 (Build.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) 

답변

1

그것은 당신이 Build.py를 호출하고 전달하는 것처럼 나에게 같습니다

#!/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 파일 : 여기에

내 코드의 자른 버전입니다 스크립트를 매개 변수로 사용하십시오. 난 그냥 무슨 일이 일어날지를보고 당신이 게시 한 동일한 출력을 가지고 테스트.

현재 안정적인 PyInstaller (1.5.1)에서는 create a spec file first이 필요합니다. Build.py 대신 스크립트를 인수로 사용하여 MakeSpec.py를 실행하십시오. 이렇게하면 .spec 파일이 만들어져 Build.py로 전송됩니다.

설명서에는 Windows에서 아이콘을 설정하고 배포 옵션을 설정하는 것과 같은 것들을 위해 MakeSpec에 전달할 수있는 옵션이 나와 있습니다. 이 옵션들은 모두 spec 파일에 저장되므로 응용 프로그램을 다시 빌드해야 할 때 Build.py를 다시 호출하면됩니다.

+0

Build.py 전에 Makespec.py를 사용하고 있습니다. 너무 많은 정보를 남겨두면 죄송합니다. – Vii

+0

Makespec.py가 생성하는 .spec 파일에 대해 Build.py를 실행하고 있습니까? –

+0

여기 있습니다. Makespec.py 파일에서 편집 할 것입니다. pyqt 모듈을 찾지 못하게하기 위해 잘못 입력 한 것 같습니다. – Vii

관련 문제