使用Tkinter+pygsheets+PyInstaller打包后遇FileNotFoundError求助
解决PyInstaller打包pygsheets应用时找不到sheets_discovery.json的问题
这个报错是因为PyInstaller打包时没自动包含pygsheets依赖的sheets_discovery.json配置文件,导致程序运行时在临时目录里找不到它。下面是几种可行的解决方法:
方法一:打包时用--add-data参数手动引入文件
- 先找到pygsheets安装目录下的
sheets_discovery.json文件,通常路径是你的Python环境的Lib/site-packages/pygsheets/data/sheets_discovery.json - 执行打包命令时加上
--add-data参数:# Windows系统用分号分隔路径 pyinstaller --add-data "C:/Path/To/Your/Python/Lib/site-packages/pygsheets/data/sheets_discovery.json;pygsheets/data/" your_script.py # Linux/macOS系统用冒号分隔路径 pyinstaller --add-data "/path/to/your/python/lib/site-packages/pygsheets/data/sheets_discovery.json:pygsheets/data/" your_script.py
方法二:修改PyInstaller的spec文件
- 先生成spec文件:
pyinstaller --name your_app_name your_script.py - 打开生成的
your_app_name.spec文件,找到datas列表,添加文件路径配置:datas=[ # 替换成你实际的文件路径 ('C:/Path/To/Your/Python/Lib/site-packages/pygsheets/data/sheets_discovery.json', 'pygsheets/data') ], - 用spec文件重新打包:
pyinstaller your_app_name.spec
方法三:先获取准确的文件路径
如果你不确定sheets_discovery.json的位置,可以运行以下代码打印路径:
import pygsheets import os print(os.path.join(os.path.dirname(pygsheets.__file__), 'data', 'sheets_discovery.json'))
把输出的路径替换到上面两种方法的路径中即可。
内容的提问来源于stack exchange,提问作者Santiago
相关产品推荐
相关产品推荐

