使用py2exe构建PyQt脚本时遇到问题(QtCore)

1 投票
3 回答
7768 浏览
提问于 2025-04-15 17:43

我正在尝试在Windows上使用pyqt制作一个简单的“你好,世界”可执行Python图形界面应用程序。所以我创建了一个叫做 pyqt.py 的文件。

import sys
from PyQt4.QtGui import *
app = QApplication(sys.argv)
button = QPushButton("Hello World", None)
button.show()
app.exec_()

我试着用下面的 setup.py 脚本来使用py2exe:

from py2exe.build_exe import py2exe
from distutils.core import setup

setup( console=[{"script": "pyqt.py"}] )

(我最开始遇到了 No module named sip 的错误,但多亏了 Py2exeAndPyQt 页面,这个问题解决了。)

现在我有了可执行文件,但当我尝试运行它时,出现了以下错误:

Traceback (most recent call last):
  File "pyqt.py", line 2, in <module>
  File "PyQt4\QtGui.pyc", line 12, in <module>
  File "PyQt4\QtGui.pyc", line 10, in __load
ImportError: No module named QtCore

我该怎么解决这个问题呢?谢谢!

3 个回答

0

这是一个例子

from setuptools import setup
import py2exe
from glob import glob

SETUP_DICT = {
    'windows': [{
        'script': 'main.py',
    }],

    'zipfile': 'lib/library.zip',

    'data_files': (
        ('', glob(r'C:\Windows\SYSTEM32\msvcp100.dll')),
        ('', glob(r'C:\Windows\SYSTEM32\msvcr100.dll')),
    ),

    'options': {
        'py2exe': {
            'bundle_files': 3,
            'includes': ['sip', 'PyQt4.QtCore'],
        },
    }
}

setup(**SETUP_DICT)
2

在pyqt.py文件中添加 from PyQt4.QtCore import * 这一行。

我不太明白为什么这个没有自动包含,但我觉得这可能和QtCore只被QtGui使用有关,而QtGui是一个C++的库……就像py2exe只会自动检测Python的依赖一样……所以你需要手动导入它。

3

你可以这样做,其实不需要导入所有的内容。

py2exe_opciones = {'py2exe': {"includes":["sip"]}}
script = [{"script":"pyqt.py"}]

setup(windows=script,options=py2exe_opciones)

现在程序应该可以正常运行了。我之前也遇到过同样的错误。

这里可以了解更多信息。

撰写回答