在不同项目间维护 Python 版本一致性是开发中的常见痛点。掌握 uv 的版本指定技巧,能让每个项目都运行在'量身定制'的解释器环境中,彻底解决'我的代码需要 Python 3.9,但系统默认是 3.11'这类问题。
为什么需要指定 Python 版本?
指定 Python 版本至关重要。某些包仅支持特定版本,团队统一能避免沟通成本,生产环境一致性则能防止 Bug。此外,多版本测试也能验证代码在不同环境下的表现。
新建项目时指定版本
在项目初始化阶段指定 Python 版本是最佳实践:
# 方式 1:使用 --python 参数直接指定
uv init --python 3.9
# 方式 2:指定精确版本
uv init --python 3.11.5
# 方式 3:使用 conda 环境中的 Python
uv init --python /path/to/your/python
执行后,uv 会自动检测或下载指定的 Python 版本,创建使用该版本的虚拟环境,并在 pyproject.toml 中记录 Python 版本约束。
为现有项目更改 Python 版本
如果你的项目已经创建,但需要更改 Python 版本,操作如下:
# 1. 首先,删除旧的虚拟环境(重要!)
rm -rf .venv # Linux/macOS
# 或 rmdir /s .venv # Windows
# 2. 使用指定版本重新创建虚拟环境
uv python pin 3.10
# 方法 2:重新创建 venv
# uv venv --python 3.10
# 3. 重新同步所有依赖
uv sync
注意:更改 Python 版本后,某些依赖可能需要重新安装或选择兼容版本。务必运行 uv sync 让 uv 重新解析依赖树。
多版本管理与服务器部署
对于需要管理多个 Python 版本的高级用户:
# 1. 查看系统可用 Python 版本
uv python list
# 2. 安装特定的 Python 版本
uv python install 3.9
uv python install 3.11.8
# 3. 设置项目默认 Python 版本(在项目目录内)
echo 'python = ">=3.10,<3.12"' >> pyproject.toml
在 Ubuntu 服务器上,可能需要先安装基础环境:
sudo apt update
sudo apt install python3.10 python3.10-venv
# 然后在项目中使用
uv venv --python python3.10
uv sync
在 pyproject.toml 中声明版本约束
除了命令行,你可以在 pyproject.toml 中声明 Python 版本要求,这是团队协作的最佳实践:
=
=
=

