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文件配置:
- 生成.spec文件:
pyinstaller 你的主脚本名.py - 打开生成的
.spec文件,找到hiddenimports列表,添加模块:hiddenimports=['pydantic.deprecated.decorator'], - 用.spec文件重新编译:
pyinstaller 你的主脚本名.spec
- 生成.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
相关产品推荐
相关产品推荐

