PyInstaller打包求助:--add-data未识别fireredroutes.txt文件
解决PyInstaller打包时fireredroutes.txt无法识别的问题
按以下步骤排查和解决:
核对路径与文件存在性
确认autolocke/Data/fireredroutes.txt路径完全正确,文件确实存在。注意Linux/macOS系统路径区分大小写,Windows系统不区分,务必和实际目录结构一致。简化Data目录打包逻辑
既然Data目录下包含多个需要打包的文件,无需逐个添加,直接打包整个目录更稳妥。将原命令中两个Data相关的--add-data参数替换为:--add-data "autolocke/Data;autolocke/Data"该命令会把Data目录下所有文件同步打包到目标路径,避免遗漏。
修正代码中文件路径的获取方式
PyInstaller打包后,程序运行时的文件路径和开发环境不同,不能直接使用相对路径。需要通过sys._MEIPASS获取打包后的资源路径,示例代码:import sys import os def get_resource_path(relative_path): if hasattr(sys, '_MEIPASS'): return os.path.join(sys._MEIPASS, relative_path) return os.path.join(os.path.abspath("."), relative_path) # 调用示例 fireroutes_file = get_resource_path("autolocke/Data/fireredroutes.txt")通过spec文件手动配置打包项
执行初始打包命令后会生成main.spec文件,打开后找到datas列表,手动添加所有需要的文件:datas = [ ('autolocke/Data/data.json', 'autolocke/Data'), ('autolocke/style.qss', 'autolocke'), ('autolocke/Data/fireredroutes.txt', 'autolocke/Data'), ('autolocke/Data/NatDexPokemonG3.txt', 'autolocke/Data') ]之后运行
pyinstaller main.spec重新打包,这种方式更直观,不易出现参数遗漏问题。
内容的提问来源于stack exchange,提问作者mabdali
相关产品推荐
相关产品推荐

