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

Create exe file from Python file using cx_Freeze

在 PyQt5 中使用 cx_Freeze,出现以下错误:

ImportError: No module named '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 OS.

尝试 this solution 类似的问题:

  1. packages 列表中删除 "PyQt5"
  2. 让cx_Freeze将整个PyQt5目录复制到build目录的lib子目录中。您可以通过将 (source, destination) 元组传递给 include_files 列表来做到这一点,它告诉 cx_Freeze 将 source (一个文件或整个目录)复制到 destination 相对于构建目录(参见 cx_Freeze documentation)。将 source 设置为 os.path.dirname(PyQt5.__file__),这会给出 Python 安装的 PyQt5 包(通过其 __init__.py 文件)的目录,以及 [= =23=]。
  3. 此外,如果您的应用程序确实使用了pandas,您还需要将"numpy"添加到packages列表中,参见 and Creating cx_Freeze exe with Numpy for Python

总之,尝试如下修改您的 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,
    },
}