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
之后还有其他问题,但编解码器问题已解决。
我写了一个 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
之后还有其他问题,但编解码器问题已解决。