使用uv管理环境
uv 是 Astral 开发的 Python 项目与包管理工具,基于 Rust 构建。它将解释器下载、虚拟环境配置、依赖安装和锁文件管理整合到了单一二进制文件中,可以直接替代 pip、virtualenv、pyenv 和 Poetry。
一、安装 uv
macOS 与 Linux:
1 | curl -LsSf https://astral.sh/uv/install.sh | sh |
Windows (PowerShell):
1 | powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex" |
安装后重新打开终端,验证安装情况:
1 | uv --version |
二、管理 Python 版本
uv 内置跨平台的 Python 解释器下载功能,无需在操作系统中预先安装 Python。
查看本地已安装及线上可选的版本:
1 | uv python list |
下载并安装指定版本:
1 | uv python install 3.10 3.11 3.12 |
卸载特定版本:
1 | uv python uninstall 3.10 |
直接调用指定版本执行命令:
1 | uv run --python 3.12 python -c "import sys; print(sys.version)" |
三、虚拟环境与依赖管理
uv 支持两种使用模式:
- 项目工作流:使用
pyproject.toml与uv.lock统一管理依赖与环境,免去手动激活虚拟环境的步骤。 - 独立虚拟环境:沿用传统的
venv与pip模式,适合轻量脚本或存量项目过渡。
1. 项目工作流
初始化新项目:
1 | uv init my_project |
执行后会自动生成项目结构,包括 pyproject.toml(依赖配置)、.python-version(当前锁定版本)和 main.py(入口代码)。
绑定当前项目的 Python 版本:
1 | uv python pin 3.11 |
添加与移除依赖(uv 会自动同步到 .venv,无需手动激活):
1 | # 添加运行依赖,自动写入 pyproject.toml 并刷新 uv.lock |
运行代码与测试:
使用 uv run 可以在当前项目的隔离环境中执行脚本,系统会自动确认依赖完整性。
1 | uv run python main.py |
在团队成员间同步环境:
拉取代码后,根据锁文件还原一致的虚拟环境:
1 | uv sync |
2. 独立虚拟环境工作流
如果只需要在任意目录手动建立一个虚拟环境:
创建虚拟环境:
1 | # 使用系统默认 Python 创建 .venv |
激活虚拟环境:
- macOS / Linux:
source .venv/bin/activate - Windows:
.venv\Scripts\activate
安装与管理包:
1 | # 安装单个或多个包 |
四、直接运行 Python CLI 工具
通过 uvx(等同于 uv tool run),可以在隔离的临时环境中运行命令行工具,不需要全局安装到本地系统:
1 | # 临时运行 ruff 检查代码 |
五、配置镜像源
临时指定源:
1 | uv add requests --index-url https://mirrors.aliyun.com/pypi/simple/ |
通过环境变量配置全局默认源:
- Linux / macOS(写入
~/.bashrc或~/.zshrc):1
export UV_DEFAULT_INDEX="https://mirrors.aliyun.com/pypi/simple/"
- Windows PowerShell:
1
[Environment]::SetEnvironmentVariable("UV_DEFAULT_INDEX", "https://mirrors.aliyun.com/pypi/simple/", "User")
旧版本使用的 UV_INDEX_URL 已被标记为弃用,目前仍可使用,新配置建议用 UV_DEFAULT_INDEX。
为单个项目配置独立源:
在项目的 pyproject.toml 末尾补充:
1 | [[tool.uv.index]] |
六、常用命令速查
| 类别 | 命令 | 说明 |
|---|---|---|
| Python 版本 | uv python install <version> |
下载并安装指定 Python 版本 |
uv python list |
查看本地及远程可用 Python 版本 | |
uv python pin <version> |
将当前项目绑定至指定版本 | |
| 项目依赖 | uv init <name> |
初始化 Python 项目 |
uv add <package> |
添加依赖并写入 lock 文件 | |
uv add --dev <package> |
添加开发依赖 | |
uv remove <package> |
移除依赖项 | |
uv sync |
按照 uv.lock 同步当前环境 | |
uv run <command> |
在项目环境中执行脚本或命令 | |
| 基础虚拟环境 | uv venv |
创建轻量虚拟环境 |
uv pip install <package> |
安装指定 Python 包 | |
| 独立工具 | uvx <tool> [args] |
在临时环境中执行 CLI 工具 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Zenty's Blog!