将cx_Freeze与PyQt5一起使用,我得到以下错误:
导入错误:没有名为"PyQt5.Qt"的模块
我的setup.py
文件如下:
from cx_Freeze import setup, Executable
base = None
executables = [Executable("Chemistry.py", base=base)]
packages = ["idna", "sys", "pandas", "PyQt5"]
options = {
'build_exe': {
'packages':packages,
},
}
setup(
name = "<any name>",
options = options,
version = "<any number>",
description = '<any description>',
executables = executables
)
如何修复此错误?我正在使用Windows操作系统。
尝试以下解决方案来解决类似的问题:
- 从
packages
列表中删除"PyQt5"
- 让我们cx_Freeze将整个
PyQt5
目录复制到构建目录的lib
子目录中。您可以通过将(source, destination)
元组传递给include_files
列表来执行此操作,该列表告诉cx_Freeze将source
(文件或整个目录(复制到相对于构建目录的destination
(请参阅cx_Freeze文档(。将source
设置为os.path.dirname(PyQt5.__file__)
,这将提供 Python 安装的PyQt5
包的目录(通过其__init__.py
文件(,以及要"lib"
的目标。 - 此外,如果你的应用程序确实使用 pandas,你还需要将
"numpy"
添加到packages
列表中,请参阅cx_Freeze无法使用 pandas 构建 msi 和使用 Numpy for Python 创建cx_Freeze exe
。
总之,尝试按如下方式修改setup.py
脚本:
import os
import PyQt5
include_files = [(os.path.dirname(PyQt5.__file__), "lib")]
packages = ["idna", "sys", "numpy", "pandas"]
options = {
'build_exe': {
'include_files':include_files,
'packages':packages,
},
}