uv、Ruff、ty使用与实战
概述
uv,GitHub,官网,Astral团队开发,Python包管理工具,旨在替代pip和virtualenv,提供更快更高效的包安装与虚拟环境管理体验。借鉴Cargo和npm等工具优点,基于Rust开发,性能优异。
集成:
- 包安装,替代
pip; - 虚拟环境管理,替代
virtualenv; - 锁定文件,兼容
pip-tools和Poetry。
优势
- 极快的安装速度:基于Rust实现,比pip快几十倍;
- 自动创建虚拟环境:类似Poetry,无需手动激活;
- 锁定依赖:生成
uv.lock文件,确保可重复构建; - 兼容性强:兼容
pyproject.toml,无缝对接现有项目; - 缓存机制优秀:充分利用缓存,加快安装流程。
适用于多种开发场景,包括但不限于:
- 项目开发和管理:快速创建和管理项目,支持项目结构的初始化和依赖声明;
- 虚拟环境管理:内置虚拟环境支持,开发者无需手动创建或激活虚拟环境即可隔离项目依赖;
- 依赖管理:使用
pyproject.toml文件声明依赖,通过uv.lock文件锁定版本,确保依赖在不同环境中的一致性; - 构建和发布:支持将项目打包为
wheel或sdist格式,并可直接发布到PyPI等包索引。
安装
有多种方式:
- 基于pip安装:
pip install uv - 基于curl安装:
curl -Ls https://astral.sh/uv/install.sh | bash - 基于PowerShell安装:
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
可用子命令:
- run
- init
- add
- remove
- version
- sync
- lock
- export:导出
- tree:查看依赖树
- format
- tool
- python
- pip
- venv
- virtualenv:等价于venv
- v:等价于venv
- build
- publish
- build-backend
- cache
- self
- clean
generate-shell-completion--generate-shell-completion- help
使用
查看版本:uv -V或uv --version
uv init demo初始化uv工程,生成文件如下
包括:
.python-version:记录当前工程Python版本;main.py:主脚本;pyproject.toml:记录当前工程依赖情况;使用uv pip安装的依赖,不会记录在此文件中。README.md:说明文件;.gitignore和.git文件夹:VCS。
pyproject.toml内容:
[project]
name = "mcp-sampling"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.12"
dependencies = [
"mcp>=1.13.1",
]
命令uv venv --python 3.12为项目初始化一个Python虚拟环境,并指定解释器版本。
uv init与uv venv --python 3.12可合并为一个更简洁的命令:uv init demo -p 3.12
激活虚拟环境:uv v或uv venv或uv virtualenv
下载三方库:uv add pandas opencv-python或uv pip install pandas(不建议)
指定环境安装包:uv add pytest --dev
卸载三方库:uv remove pandas
查看pip依赖列表:uv pip list
执行测试:uv run pytest
执行脚本:uv run main.py
查看依赖树:
30个不同的包,仅3ms!
uv sync
每个uv工程中都有一个pyproject.toml文件,用于记录该工程的依赖环境。每次使用uv命令去下载或修改依赖都会更新pyproject.toml文件。
在使用别人的uv工程时,可通过uv sync命令一键克隆其环境依赖(包含Python版本)。
使用uv pip安装的依赖,不会记录在pyproject.toml文件中。
uv python
uv可提前缓存多个版本的Python解释器,执行命令uv python list显示当前已安装和可供安装的Python版本。已经安装好的,在输出结果中会呈现蓝色。
uv python list
cpython-3.14.0rc2-windows-x86_64-none <download available>
cpython-3.14.0rc2+freethreaded-windows-x86_64-none <download available>
cpython-3.13.7-windows-x86_64-none <download available>
cpython-3.13.7+freethreaded-windows-x86_64-none <download available>
cpython-3.12.11-windows-x86_64-none C:\Users\johnn\AppData\Roaming\uv\python\cpython-3.12.11-windows-x86_64-none\python.exe
cpython-3.12.0-windows-x86_64-none D:\Program\Python312\python.exe
cpython-3.11.13-windows-x86_64-none <download available>
cpython-3.10.18-windows-x86_64-none <download available>
cpython-3.9.23-windows-x86_64-none <download available>
cpython-3.8.20-windows-x86_64-none <download available>
pypy-3.11.13-windows-x86_64-none <download available>
pypy-3.10.16-windows-x86_64-none <download available>
pypy-3.9.19-windows-x86_64-none <download available>
pypy-3.8.16-windows-x86_64-none <download available>
graalpy-3.11.0-windows-x86_64-none <download available>
graalpy-3.10.0-windows-x86_64-none <download available>
查看当前环境中使用的Python版本:uv run python --version
uv python install 3.10 3.11:提前缓存python指定版本,后续在其他项目中安装Python环境时,不需要下载。
uv python uninstall 3.12:卸载缓存的指定Python版本;
切换当前工程的Python版本:
uv python pin 3.11
uv sync
Rye
Astral团队开源,官网,不再维护,所有功能都已迁移到uv。
uvx
uvx等价于uv tool run。
Ruff
GitHub,也是Astral团队开发,文档,Python代码格式化工具和代码检查器,旨在帮助维护清晰且一致的代码库。
安装:
- 基于pip安装:
pip install ruff或pipx install ruff - 基于curl安装:
curl -LsSf https://astral.sh/ruff/install.sh | sh - 基于PowerShell安装:
powershell -c "irm https://astral.sh/ruff/install.ps1 | iex"
使用(安装后):
- 检查代码格式:
ruff check - 格式化代码:
ruff format
结合uv使用
- 检查代码格式:
uv run ruff check - 格式化代码:
uv run ruff format


执行上面任意一条命令后,会在当前目录生成隐藏文件夹.ruff_cache
ty
Astral团队开源,文档,一个Python类型检查器,可检测Python代码潜在的warning和error。
安装:
- 项目维度安装:
uv add ty或 - 全局安装:
uv tool install ty@latest或pipx install ty或pip install ty
使用:
uv run ty
An extremely fast Python type checker.
Usage: ty.exe <COMMAND>
Commands:
check Check a project for type errors
server Start the language server
version Display ty's version
help Print this message or the help of the given subcommand(s)
Options:
-h, --help Print help
-V, --version Print version
效果:
解读:
- 目前还是预发布版本,不建议生产环境使用;
- 检测出来的warning用黄色标记,error用红色标记;
- 每个检测结果都有对应的规则,规则默认开启,可禁用某条规则;
- 最后打印出检测结果条数。
用python代码跑出来的结果,和ty一样:
问题
No module named ‘mcp’
执行uv run some.py,报错ModuleNotFoundError: No module named 'mcp'。
已经通过pip install mcp安装MCP,但uv run使用独立环境,没法正确访问到包。
解决方法:uv add mcp。
速度慢
执行uv add速度贼慢:
甚至下载失败
uv支持配置镜像源来加速包下载,类似于pip的源配置:
- 临时设置:当前终端会话有效
export UV_INDEX_URL="https://pypi.tuna.tsinghua.edu.cn/simple/"
- 永久设置:添加到shell配置文件
echo 'export UV_INDEX_URL="https://pypi.tuna.tsinghua.edu.cn/simple/"' >> ~/.bashrc
source ~/.bashrc
- uv配置文件
uv.toml:
[[index]]
url = "https://pypi.tuna.tsinghua.edu.cn/simple/"
- 命令行参数
uv add mcp --index-url https://pypi.tuna.tsinghua.edu.cn/simple/
参考
更多推荐

所有评论(0)