需修改Python版本以解决zoneinfo模块缺失问题:先用uv python list和cat .python-version确认当前版本,再安装目标版本(如uv python install 3.12.3),最后执行uv python pin 3.12.3绑定项目。

修改当前项目的Python版本
当你发现项目运行报错“ModuleNotFoundError: No module named 'zoneinfo'”,而你确认代码只在 Python 3.9+ 才支持,说明当前项目绑定的 Python 版本过低,必须立刻切换。
第一步:确认项目当前锁定的 Python 版本
在项目根目录下执行:uv python list --installed,查看已安装版本;再运行 cat .python-version(Windows 用 type .python-version)确认当前项目实际绑定的是哪个版本。
第二步:安装目标版本(如需)
立即学习“Python免费学习笔记(深入)”;
若输出中没有 3.12.3,就先执行 uv python install 3.12.3。这一步不能跳过——【uv venv 或 uv sync 不会自动下载缺失的 Python 解释器,只会报错退出】。
第三步:重新绑定项目版本
执行 uv python pin 3.12.3,该命令会在项目根目录生成或覆盖 .python-version 文件,并写入 3.12.3。此后所有 uv venv、uv sync、uv run 均默认使用此版本。
修改全局默认Python版本
如果你希望新创建的所有项目都默认使用 Python 3.11,而不是每次都要手动 pin,就得设置全局偏好。
方法一:通过配置文件设置
在 Windows 上,打开 %APPDATA%\uv\uv.toml(路径为 C:\Users\用户名\AppData\Roaming\uv\uv.toml),添加以下内容:
[python]default = "3.11"
方法二:命令行一键设置(推荐)
直接运行:uv python pin --global 3.11。这条命令会自动在用户级配置位置写入默认版本,比手动编辑 toml 文件更安全,也不会因路径错误导致配置失效。
注意:全局设置仅影响新项目,已有项目的 .python-version 文件仍优先级更高,不会被覆盖。
强制让现有虚拟环境升级解释器
你已经运行过 uv venv 创建了 .venv,但现在想把它底层的 Python 换成 3.12 ——不能只改 .python-version,必须重建环境。
① 删除旧环境:rm -rf .venv(macOS/Linux)或 rmdir /s .venv(Windows PowerShell)
② 确保目标版本已安装:uv python install 3.12
③ 重新生成环境:uv venv --python 3.12
④ 同步依赖:uv sync
这四步做完,.venv\Scripts\python.exe(Windows)或 .venv/bin/python(macOS/Linux)就已指向全新的 3.12 解释器。跳过第①步会导致 uv 复用旧环境结构,解释器实际未更换。


















