自从在学习开发MCP用uv来管理开发环境时,就觉出uv的不同:安装速度奇快、效率奇高!虽然pip用起来似乎更顺手(当然这可能只是习惯问题),但是比起效率来,uv高出来不是一点半点。
vu(来源:网络)
用pip一直要activate,每次开始都要重来一遍,或是简单地来下测试,必要的activate总是少不了。一用uv后发现,activate并不是必须的,直接uv run即可,大大省事啰。
反正速度奇快,比pip快一个量级!刚开发Agent时,经常要安装LangChain这样的包,刚开始时非常不顺,经常安装不上。后来切换了国内源,倒是勉强能用。用上uv,那几乎就不用操心,咔咔一两分钟就能全部搞定,真是神一样的速度!
pip 和 uv其实两者内核是一样的,但是新工具确实优化了很多,怎么也得跟上新发展不是。后文是一些笔记总结,感兴趣的小伙伴可以试试。
uv 是 Astral 公司推出的一款基于 Rust 编写的 Python 包管理工具,旨在成为 “Python 的 Cargo”。它提供了快速、可靠且易用的包管理体验,在性能、兼容性和功能上都有出色表现,为 Python 项目的开发和管理带来了新的选择。
An extremely fast Python package and project manager, written in Rust.
1. 安装
# 通过PIP安装(推荐)
直接使用Python自带的pip安装,兼容性最佳:
pip install uv
uv --version //uv 0.12.7
uv help
# 升级 uv 自身(确保获取最新功能和 bug 修复)
uv self update
2. 初始化项目
uv init my_project
# // init -p 3.13 指定python版本
cd my_project
# 这会创建以下基本项目结构:
my_project/
└──src
| └──my_project
| └──__init__.py
├── pyproject.toml # 项目配置和依赖声明
├── .python-version # 固定 Python 版本
└── README.md
3. 创建虚拟环境
uv venv #创建默认的 .venv 环境
# Creating virtual environment at: .venv
# Activate with: .venv\Scripts\activate
# 使用指定 Python 版本创建虚拟环境
uv venv --python 3.12
# 注意:uv创建了默认的环境后,可以直接安装包和运行文件,无需再激活环境!
# 激活虚拟环境,这是为了兼容pip的用法
# source .venv/Scripts/activate #windows
# source .venv/bin/activate #ubuntu
4. 全局镜像配置
默认的 PyPI 源在国内访问较慢,配置国内镜像可大幅提升依赖安装速度。
全局配置后,所有项目默认使用指定镜像,无需重复设置。
步骤1:找到配置文件路径
Linux/macOS: ~/.config/uv/uv.toml
Windows: %APPDATA%\uv\uv.toml
eg: C:\Users\jacky\AppData\uv
步骤2:创建/编辑配置文件
C:\Users\jacky\AppData\uv\uv.toml
步骤3:添加镜像源配置
# 阿里云镜像(推荐,稳定性好)
[[index]]
name = "aliyun"
url = "https://mirrors.aliyun.com/pypi/simple/"
default = true
# 可选:清华大学镜像(学术网络友好)
# url = "https://pypi.tuna.tsinghua.edu.cn/simple/"
# [registries.douban]
# url = "https://pypi.doubanio.com/simple/"
// 临时用阿里云镜像
# 安装 requests 时临时用阿里云镜像
uv add requests --index-url https://mirrors.aliyun.com/pypi/simple/
# 同步环境依赖时临时用清华镜像
uv sync --index-url https://pypi.tuna.tsinghua.edu.cn/simple/
5. 安装包
uv add mcp requests
# uv add 可以理解为 uv pip install的增强版,底层同样是利用了pip进行安装,但是uv add额外增加了更新项目配置文件的功能
# 添加指定版本的依赖
uv add "requests>=2.31.0"
# 添加开发依赖(只在开发环境使用,如测试框架)
uv add --dev pytest ruff
# 移除依赖
uv remove requests
# 导出依赖:
uv pip freeze > requirements.txt # 兼容传统格式
# 设置国内镜像,如果安装速度慢,可以在 pyproject.toml 中设置国内镜像源
[tool.uv]
index-url = "https://pypi.tuna.tsinghua.edu.cn/simple"
# 查看已安装的包:
uv pip list
6. 运行
uv run 是 uv 中非常实用的命令,可以无需手动激活虚拟环境直接运行脚本或命令,uv 会自动找到并使用正确的环境
# 直接运行 Python 脚本
uv run main.py
# 运行任意命令(在虚拟环境的上下文中执行)
uv run python -c "import requests; print(requests.__version__)"
7. 同步依赖
根据pyproject.toml和uv.lock自动安装依赖:
uv sync