uv
是一个较新的 Python 包管理工具,由 Astral 团队开发,旨在替代 pip
、pip-tools
、virtualenv
和部分 poetry
/pipenv
的功能。它的主要特点是:
uv.lock
)和传统的 requirements.txt
uv
pip install uv
uv python list
(debug) [root@iZj6c6sfmmeac2w0k213fbZ debug]# uv python list
cpython-3.14.0a6-linux-x86_64-gnu <download available>
cpython-3.14.0a6+freethreaded-linux-x86_64-gnu <download available>
cpython-3.13.3-linux-x86_64-gnu /root/.local/share/uv/python/cpython-3.13.3-linux-x86_64-gnu/bin/python3.13
cpython-3.13.3+freethreaded-linux-x86_64-gnu <download available>
cpython-3.12.10-linux-x86_64-gnu <download available>
cpython-3.11.12-linux-x86_64-gnu <download available>
cpython-3.11.7-linux-x86_64-gnu /usr/local/bin/python3.11
cpython-3.11.7-linux-x86_64-gnu /usr/local/bin/python3 -> python3.11
cpython-3.10.17-linux-x86_64-gnu <download available>
cpython-3.10.0-linux-x86_64-gnu /usr/local/bin/python3.10
cpython-3.9.22-linux-x86_64-gnu <download available>
cpython-3.8.20-linux-x86_64-gnu <download available>
pypy-3.11.11-linux-x86_64-gnu <download available>
pypy-3.10.16-linux-x86_64-gnu <download available>
pypy-3.9.19-linux-x86_64-gnu <download available>
pypy-3.8.16-linux-x86_64-gnu <download available>
graalpy-3.11.0-linux-x86_64-gnu <download available>
graalpy-3.10.0-linux-x86_64-gnu <download available>
graalpy-3.8.5-linux-x86_64-gnu <download available>
(debug) [root@iZj6c6sfmmeac2w0k213fbZ debug]#
的,你可以通过指令进行当即下载,下面会讲到uv python find
/root/.local/share/uv/python/cpython-3.13.3-linux-x86_64-gnu/bin/python3.13
uv python find 3.11
/home/debug_amazon_review_spider/.venv/bin/python3
uv python find 3.12
error: Failed to inspect Python interpreter from search path at `/usr/bin/python3`
Caused by: Can't use Python at `/usr/bin/python3`
Caused by: Python 3.6.8 is not supported. Please use Python 3.8 or newer.
uv python install 3.12
安装完成后查看一下python列表
uv python list
cpython-3.14.0a6-linux-x86_64-gnu <download available>
cpython-3.14.0a6+freethreaded-linux-x86_64-gnu <download available>
cpython-3.13.3-linux-x86_64-gnu /root/.local/share/uv/python/cpython-3.13.3-linux-x86_64-gnu/bin/python3.13
cpython-3.13.3+freethreaded-linux-x86_64-gnu <download available>
cpython-3.12.10-linux-x86_64-gnu /root/.local/share/uv/python/cpython-3.12.10-linux-x86_64-gnu/bin/python3.12
cpython-3.11.12-linux-x86_64-gnu <download available>
cpython-3.11.7-linux-x86_64-gnu /usr/local/bin/python3.11
cpython-3.11.7-linux-x86_64-gnu /usr/local/bin/python3 -> python3.11
cpython-3.10.17-linux-x86_64-gnu <download available>
cpython-3.10.0-linux-x86_64-gnu /usr/local/bin/python3.10
cpython-3.9.22-linux-x86_64-gnu <download available>
cpython-3.8.20-linux-x86_64-gnu <download available>
pypy-3.11.11-linux-x86_64-gnu <download available>
pypy-3.10.16-linux-x86_64-gnu <download available>
pypy-3.9.19-linux-x86_64-gnu <download available>
pypy-3.8.16-linux-x86_64-gnu <download available>
graalpy-3.11.0-linux-x86_64-gnu <download available>
graalpy-3.10.0-linux-x86_64-gnu <download available>
graalpy-3.8.5-linux-x86_64-gnu <download available>
cpython-3.12.10-linux-x86_64-gnu
已经被安装到/root/.local/share/uv/python/cpython-3.12.10-linux-x86_64-gnu/bin/python3.12
当然你也可以通过名称来安装指定python版本
uv python install cpython-3.7.9-macos-x86_64-none
同时安装多个python版本
uv python install 3.11 3.12
安装其他的 Python 实现,如 PyPy:
uv python install [email protected]
uv python uninstall pypy-3.9.19-linux-x86_64-gnu
uv python pin 3.13
python -V
Python 3.11.7
uv python find
/home/debug_amazon_review_spider/.venv/bin/python3
uv python pin 3.13
Updated `.python-version` from `3.11` -> `3.13`
python -V
Python 3.11.7
uv python find
/root/.local/share/uv/python/cpython-3.13.3-linux-x86_64-gnu/bin/python3.13
python -V
指令,我们看到系统直接使用的python是3.11.7版本python -V
指令,我们看到系统的python版本还是3.11.7,说明系统的python版本是不受影响的操作 | 命令 |
---|---|
初始化项目 | uv init |
创建目录并初始化项目 | uv init project_name |
创建虚拟环境 | uv venv (自动创建 .venv ) |
激活虚拟环境 | Win:.venv\Scripts\activate Linux:source .venv/bin/activate |
删除虚拟环境 | 删除 .venv/ 文件夹 |
安装依赖 | uv pip install requests |
升级依赖 | uv pip install --upgrade requests |
卸载依赖 | uv pip uninstall requests |
冻结依赖 | uv pip freeze > requirements.txt |
使用锁文件安装 | uv pip sync (读取 uv.lock ) |
生成锁文件 | uv pip compile (从 requirements.in ) |
uv add flask
pyproject.toml 内容会添加 flask 部分
[project]
name = "01"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.13"
dependencies = [
"flask>=3.1.0",
]
uv remove flask
uv tree
uv pip compile pyproject.toml -o requirements.txt
uv pip freeze > requirements.txt
# 1. 初始化项目(创建 venv 和 pyproject.toml)
uv init
# 2. 安装依赖
uv pip install requests flask
# 3. 查看当前依赖
uv pip freeze
# 4. 创建锁文件(类似 pip-tools 的 compile)
uv pip compile
# 5. 后续基于锁文件同步环境
uv pip sync
在项目文件的pyproject.toml中,添加如下内容:
[tool.uv]
index-url = "https://pypi.tuna.tsinghua.edu.cn/simple/"
uv
与传统工具的区别功能 | uv | pip/pip-tools | poetry/pipenv |
---|---|---|---|
速度 | ✅ 非常快(Rust) | 较慢 | 中等 |
虚拟环境管理 | ✅ 自动 | 需手动 | ✅ 自动 |
支持锁文件 | ✅ .lock |
✅(pip-tools) | ✅ |
pyproject.toml 支持 | ✅ | ❌ | ✅ |
uv run main.py
就可以执行你的main.py文件(任意.py文件都可以),而且会直接引用你的虚拟环境,省去你source .venv/bin/activate
的步骤,非常方便,重点就是防止了uv run main.py
有点等同于
source .venv/bin/activate
python main.py