使用 cx_Freeze 冻结 Python 3.7 脚本时如何修复错误
Posted
技术标签:
【中文标题】使用 cx_Freeze 冻结 Python 3.7 脚本时如何修复错误【英文标题】:How do I fix an Error when Freezing Python 3.7 Script using cx_Freeze 【发布时间】:2018-11-13 01:21:34 【问题描述】:我正在尝试使用 cx_Freeze 使用我的 python 脚本创建一个独立的可执行文件。
这是我得到的错误:error: [Errno 2] No such file or directory: 'C:\\Program Files\\Python37\\tcl\\tcl8.6'
这与使用 PySimpleGUI 等模块有什么关系吗?我正在使用PySimpleGUI 3.1.2
。
我该如何解决这个问题?
这是我的代码 (setup.py and Track_Companion.py)。
Note: Track_Companion.py is not yet finished.
【问题讨论】:
我使用 PySimpleGUI 创建 EXE 的唯一方法是使用 PyInstaller,如自述文件中所示。旁注...我会升级你的 PySimpleGUI。现在是 3.14.0。 【参考方案1】:使用 PySimpleGUI 从程序制作 .EXE 文件的说明可以在文档here 中找到。
创建.EXE:
pyinstaller -wF yoursourcefile.py
我会先升级你的 PySimpleGUI 包。
【讨论】:
【参考方案2】:cx_Freeze
还不支持 Python 3.7,它有一个错误。存在错误修复但尚未发布,但是您可以手动应用它,请参阅What could be the reason for fatal python error:initfsencoding:unable to load the file system codec? 和 Cx_freeze crashing Python3.7.0。或者,如果您愿意,也可以回滚到 Python 3.6。
您是否检查过C:\\Program Files\\Python37\\tcl\\tcl8.6
是否存在?无论如何,让您的安装脚本使用 PYTHON_INSTALL_DIR = os.path.dirname(os.path.dirname(os.__file__))
动态确定您的 Python 安装目录会更好,就像在 this answer 中所做的那样。
您需要使用build_exe
选项include_files
告诉cx_Freeze
包括Tcl 和Tk DLL,就像在the same answer 中所做的那样;如果您使用cx_Freeze
5.1.1 或5.1.0,则需要稍有不同,请参阅this answer。
【讨论】:
以上是关于使用 cx_Freeze 冻结 Python 3.7 脚本时如何修复错误的主要内容,如果未能解决你的问题,请参考以下文章
如何在使用 cx_Freeze 6.0b1 冻结的 Linux 上修复 python 3.7.3 脚本上的 numpy 依赖项路径?
使用 cx_Freeze 冻结成可执行文件后如何知道当前文件路径?