[英]PyQt and py2exe or cx_freeze: AttributeError
這里我有在Win7 x64上運行的Python 2.7.3(x64),PyQt 4.9.5-1(x64)。 我想將簡單的PyQt腳本轉換為exe文件。
這是我的python腳本:
#!/usr/bin/env python
import sys
from PyQt4 import Qt
a = Qt.QApplication(sys.argv)
def sayHello():
print "Hello, World!"
hellobutton = Qt.QPushButton("Say 'Hello world!'",None)
a.connect(hellobutton, Qt.SIGNAL("clicked()"), sayHello)
hellobutton.show()
a.exec_()
從命令行運行它可以按預期工作。 我為py2exe使用setup.py:
from distutils.core import setup
import py2exe
setup(console=['pyqt-example.py'])
但是,如果我嘗試使用python setup.py py2exe
將其轉換為py2exe 0.6.9的exe文件,則在運行exe文件時出現此錯誤:
Traceback (most recent call last):
File "pyqt-example.py", line 6, in <module>
a = Qt.QApplication(sys.argv)
AttributeError: 'module' object has no attribute 'QApplication'
我還嘗試使用\\Python27\\Scripts\\cxfreeze pyqt-example.py --target-dir dist
嘗試cx_freeze 4.3。 結果是:
Traceback (most recent call last):
File "C:\Python27\lib\site-packages\cx_Freeze\initscripts\Console.py", line 27, in <module>
exec code in m.__dict__
File "pyqt-example.py", line 6, in <module>
a = Qt.QApplication(sys.argv)
AttributeError: 'module' object has no attribute 'QApplication'
因此,我假設我錯過了向這兩個工具介紹某些Qt組件位置的信息。 我到底在想什么?
感謝Avaris,您的提示是正確的。 避免使用模塊Qt是答案。 這是可以正常工作的腳本:
#!/usr/bin/env python
import sys
from PyQt4 import QtGui,QtCore
a = QtGui.QApplication(sys.argv)
def sayHello():
print "Hello, World!"
hellobutton = QtGui.QPushButton("Say 'Hello world!'",None)
a.connect(hellobutton, QtCore.SIGNAL("clicked()"), sayHello)
hellobutton.show()
a.exec_()
之后,我必須這樣調用cx_freeze: cxfreeze pyqt-example.py --include-modules atexit --target-dir dist
。 而且有效!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.