【Python】包管理神器-uv
一、 介绍uv
官网:https://docs.astral.sh/uv/
uv是一个python虚拟环境管理工具,可以用来替代pip、conda等工具。根据官网的介绍,使用uv来管理虚拟环境,相比于pip能得到至少10倍以上的性能提升。
 
二、安装uv
文档:https://docs.astral.sh/uv/getting-started/installation/
在linux和mac上的安装直接使用curl或者wget命令即可
curl -LsSf https://astral.sh/uv/install.sh | sh
或者wget(效果一样)
wget -qO- https://astral.sh/uv/install.sh | sh
在windows上的安装命令如下
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
安装效果如下(powershell 中执行)
 
在mac上安装之后,终端输出如下
❯ curl -LsSf https://astral.sh/uv/install.sh | sh
downloading uv 0.6.14 aarch64-apple-darwin
no checksums to verify
installing to /Users/mothra/.local/binuvuvx
everything's installed!To add $HOME/.local/bin to your PATH, either restart your shell or run:source $HOME/.local/bin/env (sh, bash, zsh)source $HOME/.local/bin/env.fish (fish)
2.1. 卸载uv
卸载uv之前,先执行如下命令删除所有本地缓存文件
uv cache clean
rm -r "$(uv python dir)"
rm -r "$(uv tool dir)"
然后再删除uv的二进制文件
- mac/linux
rm ~/.local/bin/uv ~/.local/bin/uvx
- windows
rm $HOME.local\bin\uv.exe
rm $HOME.local\bin\uvx.exe
三、 基本使用
3.1. 管理python版本
使用如下命令,显示出当前环境中所有可用的python版本(包括已经安装的和可以安装的)
uv python list

如果需要安装其他版本的python,使用如下命令
uv python install 3.12
除了标准python之外,还可以安装其他的Python实现,比如PyPy实现的python
uv python install pypy@3.10
查找某个python版本的路径
 uv python find 3.10

 在具体的某个项目中,进入项目目录,使用如下命令指定选用的python版本
uv python pin 版本号
这个命令会在指定目录下创建一个.python-version文件,内容如下
uv python pin 3.13

cat .python-version  

注意!!! 这里选用的python版本只和uv管理的虚拟环境有关系,和我们全局的python、python3命令都没有关系。
3.3. 创建虚拟环境(项目)
创建项目有两种方式,第一种方式,先创建好项目目录,然后设置python版本并初始化uv虚拟环境
uv python pin 3.10
uv init # 初始化
执行了uv init之后,会在当前目录下创建几个文件,同时也会在当前目录下执行git init创建出一个新的git仓库来
❯ uv python pin 3.13
Pinned `.python-version` to `3.13`~/data/code/python/test_code                                                                                                      
❯ uv init           
Initialized project `test-code`~/data/code/python/test_code main ?6                                                                                              
❯ ls
README.md      main.py        pyproject.toml
另外一个方式是在init之后添加一个项目名,会自动创建项目文件夹
在uv init 项目名
如果需要指定特定python版本,建议使用第一种方式来创建项目,否则还需要手动修改pyproject.toml配置文件里面需要的python版本。
3.4. 添加依赖
在uv add 依赖项
比如添加requests库(制定版本号)
uv add requests==版本号
执行了这个命令后,会新增一个uv.lock文件,用于存放依赖项版本相关的信息。pyproject.toml文件中的dependencies字段也会包含需要的依赖项。
3.5. 运行程序
依赖添加好后,就可以使用uv来运行python程序了
在uv run 程序文件名 [命令行参数]
uv会自动按照我们的配置来运行程序,无序我们手动维护依赖项,也不需要手动去source各式各样的虚拟环境了。
3.6. uvx命令
随着uv下载的还有一个uvx命令,uvx命令本质上是uv tool run命令的别名,
uvx python main.py 等价于 uv run main.py 等价于 uv tool run main.py
四、小结
使用了uv,直接执行uv run就可以了,uv工具自动帮我们维护了虚拟环境,并使用了指定环境来运行我们的服务端代码,一切问题都解决啦!
而且,mcp强制使用uv,也进一步规范了使用python编写mcp server的格式,再也不用担心某些开源python项目的根目录下连requirements.txt都没有的尴尬情况了。
