You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyInstaller打包TensorFlow/Keras项目遇astor VERSION文件缺失错误

解决PyInstaller打包TensorFlow/Keras项目时astor VERSION文件缺失的问题

我之前打包老版本TensorFlow项目时也遇到过一模一样的问题,这本质是PyInstaller的打包机制没识别到astor库依赖的非代码资源文件导致的。源码运行正常是因为Python能直接访问site-packages里完整的astor目录结构,而打包后只有被PyInstaller判定为“必要”的文件才会被复制到临时运行目录。

下面是几个可行的解决办法:

方法1:通过命令行参数直接添加资源文件

找到你Python环境中astor库的安装目录(一般在Lib\site-packages\astor下),找到里面的VERSION文件,然后用PyInstaller的--add-data参数指定要打包这个文件:

pyinstaller --add-data "C:\Program Files\Python37\Lib\site-packages\astor\VERSION;astor/" your_main_script.py

注意:Windows系统下路径分隔用;,如果是类Unix系统用:;后面的astor/是打包后文件存放的相对目录,要和astor库的导入路径对应。

方法2:修改PyInstaller的spec文件

如果已经生成过spec文件(运行pyinstaller your_script.py后会自动生成),可以直接编辑spec文件中的datas列表,添加VERSION文件的映射:

a = Analysis(
    ['your_main_script.py'],
    pathex=[],
    binaries=[],
    # 在这里添加datas条目
    datas=[('C:\Program Files\Python37\Lib\site-packages\astor\VERSION', 'astor')],
    ...
)

修改完后,用spec文件重新打包:

pyinstaller your_script.spec

方法3:动态获取astor路径(更通用)

如果不想硬编码路径,可以用pkg_resources动态获取astor的安装位置,适合多人协作或不同环境的情况:

import pkg_resources
import os

# 获取astor的安装根目录
astor_root = pkg_resources.get_distribution('astor').location
# 拼接VERSION文件的完整路径
version_file_path = os.path.join(astor_root, 'astor', 'VERSION')

然后把这个路径代入到--add-data参数中,或者在生成spec文件时自动填充datas。

另外,建议检查下你的astor版本是否和TensorFlow 1.15兼容,一般tf1.15对应的astor版本在0.8.x左右,用pip show astor可以查看当前版本,版本不兼容也可能引发奇怪的问题。

内容的提问来源于stack exchange,提问作者Mudit Rastogi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 13:09:06