PyInstaller打包的Python exe无法启动,提示CITATION.rst文件不存在
解决PyInstaller打包exe时找不到photutils CITATION.rst的问题
问题原因
PyInstaller打包时未自动包含photutils所需的CITATION.rst文件,程序运行时photutils会尝试读取该文件,导致路径错误。
解决方案
方案1:打包时用--add-data参数指定文件
先找到photutils的安装路径:
在命令行执行:pip show photutils输出中的
Location字段就是安装目录,进入该目录找到CITATION.rst文件(通常直接在photutils根目录下)。执行打包命令(Windows系统):
pyinstaller --add-data "完整路径/photutils/CITATION.rst;photutils" 你的脚本名.py(Mac/Linux系统将分号
;换成冒号:)
方案2:修改spec文件打包
- 先生成spec文件:
pyinstaller 你的脚本名.py - 打开生成的
你的脚本名.spec文件,找到datas列表,添加文件路径:datas=[('完整路径/photutils/CITATION.rst', 'photutils')], - 用spec文件重新打包:
pyinstaller 你的脚本名.spec
方案3:使用PyInstaller钩子文件
- 创建一个名为
hook-photutils.py的文件,内容如下:from PyInstaller.utils.hooks import collect_data_files datas = collect_data_files('photutils') - 打包时指定钩子目录:
(钩子文件要和脚本放在同一目录)pyinstaller --additional-hooks-dir=. 你的脚本名.py
注:之前设置
photutils.__citation__ = None无效,是因为该文件的读取逻辑在导入photutils.detection等子模块时触发,而非主模块导入阶段。
内容的提问来源于stack exchange,提问作者Michel Michaud
相关产品推荐
相关产品推荐

