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

PyInstaller打包的.exe启动失败:找不到pydantic.deprecated.decorator模块

PyInstaller编译exe后提示找不到pydantic.deprecated.decorator模块的解决方法

问题描述

我用PyInstaller把Python代码编译成.exe文件,但启动时提示找不到模块pydantic.deprecated.decorator,自己的代码里并没有直接使用这个模块,已经尝试重新安装pydantic,但问题依然存在,报错回溯信息如下:

回溯(最近的调用最后):
  文件 "pydantic_internal_validators.py", 第99行, 在 _import_string_logic中
  文件 "importlib\__init__.py", 第126行, 在 import_module中
  文件 "<frozen importlib._bootstrap>", 第1204行, 在 _gcd_import中
  文件 "<frozen importlib._bootstrap>", 第1176行, 在 _find_and_load中
  文件 "<frozen importlib._bootstrap>", 第1140行, 在 _find_and_load_unlocked中
ModuleNotFoundError: 找不到名为 'pydantic.deprecated.decorator' 的模块

上述异常是以下异常的直接原因:

回溯(最近的调用最后):
  文件 "pydantic_internal_validators.py", 第62行, 在 import_string中
  文件 "pydantic_internal_validators.py", 第108行, 在 _import_string_logic中
ImportError: 找不到名为 'pydantic.deprecated.decorator' 的模块

上述异常是以下异常的直接原因:

回溯(最近的调用最后):
  文件 "UX.py", 第9行, 在 <module>中
  文件 "<frozen importlib._bootstrap>", 第1176行, 在 _find_and_load中
  文件 "<frozen importlib._bootstrap>", 第1147行, 在 _find_and_load_unlocked中
  文件 "<frozen importlib._bootstrap>", 第690行, 在 _load_unlocked中
  文件 "PyInstaller\loader\pyimod02_importers.py", 第384行, 在 exec_module中
  文件 "RAG_modif_pour_UX.py", 第18行, 在 <module>中
  文件 "<frozen importlib._bootstrap>", 第1176行, 在 _find_and_load中
  文件 "<frozen importlib._bootstrap>", 第1147行, 在 _find_and_load_unlocked中
  文件 "<frozen importlib._bootstrap>", 第690行, 在 _load_unlocked中
  文件 "PyInstaller\loader\pyimod02_importers.py", 第384行, 在 exec_module中
  文件 "langchain_ollama\__init__.py", 第3行, 在 <module>中
  文件 "<frozen importlib._bootstrap>", 第1176行, 在 _find_and_load中
  文件 "<frozen importlib._bootstrap>", 第1147行, 在 _find_and_load_unlocked中
  文件 "<frozen importlib._bootstrap>", 第690行, 在 _load_unlocked中
  文件 "PyInstaller\loader\pyimod02_importers.py", 第384行, 在 exec_module中
  文件 "langchain_ollama\chat_models.py", 第39行, 在 <module>中
  文件 "<frozen importlib._bootstrap>", 第1176行, 在 _find_and_load中
  文件 "<frozen importlib._bootstrap>", 第1147行, 在 _find_and_load_unlocked中
  文件 "<frozen importlib._bootstrap>", 第690行, 在 _load_unlocked中
  文件 "PyInstaller\loader\pyimod02_importers.py", 第384行, 在 exec_module中
  文件 "langchain_core\tools\__init__.py", 第22行, 在 <module>中
  文件 "<frozen importlib._bootstrap>", 第1176行, 在 _find_and_load中
  文件 "<frozen importlib._bootstrap>", 第1147行, 在 _find_and_load_unlocked中
  文件 "<frozen importlib._bootstrap>", 第690行, 在 _load_unlocked中
  文件 "PyInstaller\loader\pyimod02_importers.py", 第384行, 在 exec_module中
  文件 "langchain_core\tools\base.py", 第27行, 在 <module>中
  文件 "<frozen importlib._bootstrap>", 第1229行, 在 _handle_fromlist中
  文件 "pydantic\__init__.py", 第402行, 在 __getattr__中
  文件 "pydantic\_migration.py", 第287行, 在 wrapper中
  文件 "pydantic_internal_validators.py", 第64行, 在 import_string中
pydantic_core._pydantic_core.PydanticCustomError: 无效的Python路径:找不到名为 'pydantic.deprecated.decorator' 的模块

解决方法

  • 手动添加隐藏依赖编译:PyInstaller静态分析无法捕获动态导入的模块,编译时直接指定该模块:

    pyinstaller --hidden-import pydantic.deprecated.decorator 你的主脚本名.py
    

    若有多个缺失模块,可重复添加--hidden-import参数。

  • 通过.spec文件配置:

    1. 生成.spec文件:
      pyinstaller 你的主脚本名.py
      
    2. 打开生成的.spec文件,找到hiddenimports列表,添加模块:
      hiddenimports=['pydantic.deprecated.decorator'],
      
    3. 用.spec文件重新编译:
      pyinstaller 你的主脚本名.spec
      
  • 降级pydantic版本:新版本pydantic可能移除了该模块,但依赖库仍在调用,可尝试兼容版本:

    pip install pydantic==2.6.4
    
  • 清理缓存后重新编译:缓存残留可能导致问题,清理后再编译:

    rm -rf build dist
    rm 你的主脚本名.spec
    pyinstaller --hidden-import pydantic.deprecated.decorator 你的主脚本名.py
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 20:55:22