概述

uv,GitHub官网,Astral团队开发,Python包管理工具,旨在替代pip和virtualenv,提供更快更高效的包安装与虚拟环境管理体验。借鉴Cargo和npm等工具优点,基于Rust开发,性能优异。

集成:

  • 包安装,替代pip
  • 虚拟环境管理,替代virtualenv
  • 锁定文件,兼容pip-toolsPoetry

优势

  • 极快的安装速度:基于Rust实现,比pip快几十倍;
  • 自动创建虚拟环境:类似Poetry,无需手动激活;
  • 锁定依赖:生成uv.lock文件,确保可重复构建;
  • 兼容性强:兼容pyproject.toml,无缝对接现有项目;
  • 缓存机制优秀:充分利用缓存,加快安装流程。

适用于多种开发场景,包括但不限于:

  • 项目开发和管理:快速创建和管理项目,支持项目结构的初始化和依赖声明;
  • 虚拟环境管理:内置虚拟环境支持,开发者无需手动创建或激活虚拟环境即可隔离项目依赖;
  • 依赖管理:使用pyproject.toml文件声明依赖,通过uv.lock文件锁定版本,确保依赖在不同环境中的一致性;
  • 构建和发布:支持将项目打包为wheelsdist格式,并可直接发布到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 -Vuv --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 inituv venv --python 3.12可合并为一个更简洁的命令:uv init demo -p 3.12

激活虚拟环境:uv vuv venvuv virtualenv
在这里插入图片描述

下载三方库:uv add pandas opencv-pythonuv 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 ruffpipx 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@latestpipx install typip 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/

参考

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐