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

PyInstaller打包时出现pydantic无__version__属性报错如何解决?

报错成因

该错误由全局安装的PyInstaller与虚拟环境内的依赖版本不匹配导致,具体逻辑如下:

  1. 项目依赖的spaCy库会默认安装pydantic作为底层依赖,你使用的全局PyInstaller 4.6版本自带的pydantic打包钩子仅适配1.x版本的pydantic,而当前虚拟环境中安装的是2.0及以上版本的pydantic,该版本已调整了版本属性的读取路径,导致钩子无法读取到__version__属性。
  2. 尽管打包时通过--paths参数指定了虚拟环境的依赖目录,但全局PyInstaller的钩子默认从全局Python的site-packages目录加载,不会适配虚拟环境内的依赖版本规则,进一步触发了版本读取异常。
可行修复方案
  • 方案1(最推荐):在当前项目的虚拟环境中安装PyInstaller
    激活虚拟环境后执行pip install pyinstaller,后续直接在虚拟环境内执行打包命令即可,无需额外添加--paths参数:
    pyinstaller --onefile edit_epub.py
    
    该方案可保证PyInstaller版本、钩子规则与虚拟环境内的依赖完全匹配,从根源避免版本兼容问题。
  • 方案2:适配全局PyInstaller的pydantic版本要求
    在全局Python环境中执行pip install pydantic<2.0,安装1.x版本的pydantic匹配旧版钩子的读取逻辑,之后再执行原打包命令即可。
  • 方案3:跳过pydantic钩子(应急使用)
    打包时添加--exclude-module hook-pydantic参数,强制PyInstaller不加载pydantic钩子,适合项目未直接依赖pydantic的场景,使用该方案后需自行测试打包后的可执行文件功能是否正常。
  • 方案4:升级全局PyInstaller到最新版本
    在全局Python环境中执行pip install --upgrade pyinstaller pyinstaller-hooks-contrib,新版PyInstaller已适配pydantic 2.0+的版本属性读取规则,可直接解决该报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 19:45:03