Python 3.13.0与Pydantic搭配时出现“No module named 'typing_extensions'”错误的原因及解决方法
Python 3.13.0与Pydantic搭配时出现“No module named 'typing_extensions'”错误的原因及解决方法
问题背景
我之前有一段代码在Python 3.10.12 + Pydantic 2.7.3的环境下运行完全正常。后来看到资料说Pydantic ^2.8版本开始支持Python 3.13,于是我切换到Python 3.13.0环境,安装了Pydantic 2.10.2,但就连在shell里执行import pydantic这么基础的操作都报错了,错误信息如下:
File "/home/user/path-to-package/src/validator.py", line 9, in <module> from pydantic import TypeAdapter, BaseModel, validator File "/home/user/path-to-package/.venv/lib/python3.13/site-packages/pydantic/__init__.py", line 396, in <module> _getattr_migration = getattr_migration(__name__) File "/home/user/path-to-package/.venv/lib/python3.13/site-packages/pydantic/_migration.py", line 260, in getattr_migration from .errors import PydanticImportError File "/home/user/path-to-package/.venv/lib/python3.13/site-packages/pydantic/errors.py", line 7, in <module> from typing_extensions import Literal, Self ModuleNotFoundError: No module named 'typing_extensions'
这到底是为什么?我该怎么解决这个问题?
原因分析
其实问题很直白:尽管Python 3.13已经内置了不少原本属于typing_extensions的特性,但Pydantic 2.x系列(包括你用的2.10.2)在Python 3.13环境下依然依赖typing_extensions库。你的虚拟环境里没有安装这个依赖,所以Python找不到它,就抛出了ModuleNotFoundError。
解决方法
修复起来非常简单,只需要在你的虚拟环境中安装typing_extensions即可,执行下面的命令:
pip install typing_extensions
安装完成后,再尝试执行import pydantic或者运行你的代码,应该就能正常工作了。
备注:内容来源于stack exchange,提问作者GoneAsync




