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

使用auto-py-to-exe打包Python为exe时frozendict缺失VERSION文件的解决方法

解决auto-py-to-exe打包后frozendict的VERSION文件缺失问题

问题现象

使用auto-py-to-exe打包Python脚本后,运行生成的exe文件时出现以下错误:

Traceback (most recent call last):
  File "NNbacktest.py", line 29, in <module>
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
  File "PyInstaller\loader\pyimod02_importers.py", line 499, in exec_module
  File "yfinance\__init__.py", line 23, in <module>
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
  File "PyInstaller\loader\pyimod02_importers.py", line 499, in exec_module
  File "yfinance\ticker.py", line 29, in <module>
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
  File "PyInstaller\loader\pyimod02_importers.py", line 499, in exec_module
  File "yfinance\base.py", line 32, in <module>
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
  File "PyInstaller\loader\pyimod02_importers.py", line 499, in exec_module
  File "yfinance\data.py", line 18, in <module>
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
  File "PyInstaller\loader\pyimod02_importers.py", line 499, in exec_module
  File "frozendict\__init__.py", line 33, in <module>
FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Users\\jsgas\\AppData\\Local\\Temp\\_MEI100882\\frozendict\\VERSION'
[13020] Failed to execute script 'NNbacktest' due to unhandled exception!

错误根源是PyInstaller未自动打包frozendict库所需的VERSION资源文件,导致运行时无法读取该文件。

解决方案

方案1:通过auto-py-to-exe添加额外文件

  • 打开auto-py-to-exe工具,找到Additional Files模块
  • 点击Add Files,定位到你的Python环境中frozendict包的VERSION文件(通常路径为Python安装目录\Lib\site-packages\frozendict\VERSION)
  • 在文件的输出路径设置中,填写frozendict/,确保打包后该文件会被放置到临时目录的frozendict子文件夹下
  • 重新执行打包流程

方案2:手动修改PyInstaller spec文件

  • 打开命令行,执行pyi-makespec NNbacktest.py生成对应的spec文件
  • 打开生成的NNbacktest.spec,找到datas参数,添加以下内容(替换实际路径):
    datas=[('C:/你的Python路径/Lib/site-packages/frozendict/VERSION', 'frozendict')],
    
  • 执行pyinstaller NNbacktest.spec完成打包,或者在auto-py-to-exe中选择Spec File模式加载该文件进行打包

方案3:修改frozendict源码(临时 workaround)

  • 找到Python环境中frozendict的__init__.py文件(路径为Python安装目录\Lib\site-packages\frozendict\__init__.py)
  • 定位到读取VERSION文件的代码段(约第33行),将原代码替换为直接指定版本号:
    # 替换前的原代码:
    # with open(os.path.join(os.path.dirname(__file__), 'VERSION')) as f:
    #     __version__ = f.read().strip()
    
    # 替换为(版本号改为你安装的frozendict实际版本):
    __version__ = "2.3.8"
    
  • 保存文件后重新打包脚本

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 18:11:10