cx_freeze可执行文件因"程序已停止工作而崩溃"和#34;没有模块命名编解码器"

时间:2017-11-06 19:52:08

标签: python-3.x cx-freeze

我写了一个需要几个模块的Python脚本,这些模块是:

PyQt5, plotly, 大熊猫, 约会时间, 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(尽管我已经卸载了所有其他版本)。

另外,我正在跑步:

操作系统:Windows 7

Python:Python 3.6.3 64位

1 个答案:

答案 0 :(得分:1)

事实证明问题是cx_freeze。如果您使用pip进行安装,则不会安装最新版本。相反,我用Google搜索“cx_freeze下载”,为我的Windows版本下载了最新的.whl,然后运行:

pip install [name of file here].whl

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