使用cx_Freeze打包Python程序后报错路径显示编译路径求助
cx_Freeze打包后报错路径显示源码路径的解决方法
问题说明
使用cx_Freeze官方文档方法打包Python代码,程序运行正常,但报错时显示的是编译阶段的本地源码路径,而非可执行文件内的对应路径,需要调整配置让错误路径指向exe内的位置。
现有配置
setup.py代码
build_exe_options = { "optimize": 0, "excludes": ["PyQt6"]} pkgs = find_namespace_packages(include=["controller*", "model*", "Resources*", "view*", "DLL*"]) setup(name='myApp', version='0.0', packages=pkgs, install_requires=[ 'numpy', "scipy" ], include_package_data=True, options={"build_exe": build_exe_options}, executables= Executable("app.py", base=None)
操作命令
python -m venv venv venv\Scripts\activate python.exe -m pip install --upgrade pip pip install cx_freeze setuptools pip install -e . python setup.py build_exe
解决方案
问题源于缺少路径替换配置,cx_Freeze提供的replace_paths参数可将编译时的绝对路径替换为自定义路径。修改build_exe_options添加该参数即可:
build_exe_options = { "optimize": 0, "excludes": ["PyQt6"], # 将所有绝对源码路径替换为可执行文件内的相对路径标识 "replace_paths": [("*", ".")] }
("*", ".")表示把所有原始绝对路径替换为当前目录(即exe所在目录的相对路径),也可指定具体规则如("<你的本地源码路径>", "<自定义名称>")来精准替换。- 该参数会修改打包后字节码中的路径信息,报错时将显示替换后的路径,而非原始本地源码路径。
内容的提问来源于stack exchange,提问作者Mour_Ka
相关产品推荐
相关产品推荐

