cx_freeze 可执行文件因 "Program Has Stopped Working" 和 "No Module Named Codec" 而崩溃

cx_freeze executable crashes with "Program Has Stopped Working" and "No Module Named Codec"

我写了一个 Python 脚本,它需要一些模块,它们是:

PyQt5, 阴谋地, pandas, 约会时间, xlsxwriter

我正在尝试使用 cx_freeze 将它们转换为 .exe。我以前用一个主要依赖 PyQt5 的更简单的程序做过一次。

行:

python setup.py build

在命令提示符下完成且没有错误。

我的 setup.py 文件看起来像:

  import sys

kwargs = {"name": "x",
          "version": "1.2",
          "author": "x",
          "author_email": "x",
          "description": "x",
          "zip_safe": False
          }

try:
    if sys.argv[1] == "build":
        import os
        from setuptools import find_packages
        from cx_Freeze import setup, Executable

        kwargs["options"] = {
            "build_exe": {
                "packages": find_packages() + ["os", "numpy", "plotly", "xlsxwriter", "sys", "datetime"],
                "includes": ["numpy", "plotly", "pkg_resources", "PyQt5", "xlsxwriter", "sys", "datetime","codecs"],
        }
    }
    kwargs["executables"] = [Executable(r"MyScript.py", 
base="console")]

    setup(**kwargs)
except Exception as e:
    print(e)

带有 [username] 的行中有我的用户名。

当我运行它时,命令行显示:

Fatal Python error: Py_Initialize: unable to load the file system codec
Traceback (most recent call last):
  File "C:\Users\[Username]\AppData\Local\Programs\Python\Python36\lib\encodings\__init__.py", line 31, in <module>
ModuleNotFoundError: No module named 'codecs'

更新

在互联网上阅读了更多内容后,似乎是安装问题。所以我卸载并重新安装了 Python 以及卸载 Anaconda 后我需要的所有模块(以防万一它与 Anaconda 发行版有关)。但是,我仍然看到上述错误。 一个名为codecs的模块,Python脚本(不是.exe)工作正常。我尝试更改我的路径变量以确保它指向 Python 的正确版本(尽管我已经卸载了所有其他版本)。

还有,我是运行宁:

OS: Windows 7

Python: Python 3.6.3 64 位

原来问题出在cx_freeze。如果您使用 pip 安装它,它不会安装最新版本。相反,我用谷歌搜索 "cx_freeze download",为我的 windows 版本下载了最新的 .whl,然后 运行:

pip install [name of file here].whl

之后还有其他问题,但编解码器问题已解决。