使用 cx_Freeze 从 Python 文件创建 exe 文件



将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操作系统。

尝试以下解决方案来解决类似的问题:

  1. packages列表中删除"PyQt5"
  2. 让我们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"的目标。
  3. 此外,如果你的应用程序确实使用 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,
},
}

最新更新