簡體   English   中英

PyQt和py2exe或cx_freeze:AttributeError

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM