uv、Ruff、ty使用与实战
概述:安装、使用、uv sync、uv python、Rye、uvx、Ruff、ty、No module named 'mcp'、速度慢。
概述
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)