为什么pyinstaller打包生成的可执行文件运行时报提取文件失败错误
问题原因
你的报错核心是--add-data参数的格式使用错误,具体问题如下:
- PyInstaller在Windows平台下
--add-data的语法规则为源路径;部署目标路径:通配符*仅允许出现在源路径中,用来匹配需要打包的文件,部署目标路径不能包含通配符,它是指定打包后的资源在exe运行时要释放到的目录路径。 - 你当前的参数里把部署目标路径写成了
<path_to>\Pack_Movements\datacreationScripts\utilities\init_data\*,路径里包含非法字符*,Windows系统不允许路径中存在*、?、<这类特殊字符,exe运行时尝试创建该非法路径失败,就会抛出fopen: Invalid argument的报错,和你本地是否存在Readme.txt没有关系,报错里的Readme.txt是资源释放过程中路径拼接后输出的提示内容。 - 额外说明:部署目标路径不需要写本地绝对路径,只需要填写相对exe运行临时目录的相对路径即可,写成本地绝对路径会导致其他用户运行exe时尝试创建你本地的路径,大概率也会报错。
修复方法
方法1:直接修改打包命令
将--add-data参数修正为如下格式即可,重新运行打包命令:
pyinstaller -F --add-data "<path_to>\Pack_Movements\*;datacreationScripts\utilities\init_data" main.py
方法2:修改spec文件后打包
把spec文件中datas对应的行修改为:
datas=[('<path_to>\\Desktop\\test\\Pack_Movements\\*', 'datacreationScripts\\utilities\\init_data')],
修改完成后执行pyinstaller main.spec重新打包即可。
内容的提问来源于stack exchange,提问作者user3521180
相关产品推荐
相关产品推荐

