Pyinstaller打包程序时subprocess找不到文件的问题求助
PyInstaller打包exe后FileNotFoundError排查步骤
查看完整报错栈:不要双击运行exe,打开命令提示符,切换到exe所在目录,输入
你的文件名.exe执行,这样能看到完整的错误信息,通常会显示具体缺失的文件路径。检查代码中的文件路径处理:
- 代码里如果用到外部文件(配置、图片、数据等),绝对路径会导致打包后找不到文件,建议用相对路径结合脚本目录来拼接路径,示例代码:
import os # 获取当前脚本所在目录 script_dir = os.path.dirname(os.path.abspath(__file__)) # 拼接目标文件路径 target_file = os.path.join(script_dir, "需要读取的文件.txt") - 确认外部文件是否被打包:如果代码依赖的文件没被自动包含,打包时用
--add-data参数指定,Windows下格式为pyinstaller --add-data "源文件路径;目标路径" 你的脚本.py,比如pyinstaller --add-data "config.ini;." main.py,表示把config.ini打包到exe同目录。
- 代码里如果用到外部文件(配置、图片、数据等),绝对路径会导致打包后找不到文件,建议用相对路径结合脚本目录来拼接路径,示例代码:
切换打包模式排查:
- 默认的
--onefile模式会把所有文件打包成单个exe,运行时临时解压,容易出现路径问题。试试用--onedir模式打包(命令:pyinstaller --onedir 你的脚本.py),生成一个包含所有依赖文件的文件夹,打开dist里的文件夹,检查是否有缺失的.dll或其他依赖文件。
- 默认的
升级PyInstaller:不同版本的PyInstaller对Python3.9的兼容性不同,执行
pip install --upgrade pyinstaller升级后重新打包。排查安全软件干扰:部分杀毒软件会误删打包生成的文件或拦截exe运行,暂时关闭杀毒软件后再测试exe是否能正常运行。
内容的提问来源于stack exchange,提问作者Kevin James
相关产品推荐
相关产品推荐

