uv:新一代Python包和项目管理工具
写Rust的时候,对项目管理工具cargo
很是喜欢,当时就觉得要是python也能有一个这样的管理工具就好了。Astral公司在推出了python linter的ruff之后,又推出了uv
,一个cargo
味很重的python包和项目管理工具。或者说,uv
是python的cargo
。更加难能可贵的是uv
使用Rust编写,速度快,性能强,还不必担心潜在的跨平台缺陷。
网络上很多人介绍uv
都是说安装项目快,其中更大的意义是python有了一个稳定且高性能的项目管理工具,恰好这个工具很快很稳定。这一点上,写过Rust的人应该深有同感。
安装
对于Unix-like系统:
curl -LsSf https://astral.sh/uv/install.sh | sh
对于Windows系统:
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
常见使用命令
以下是一个简单的示例,初始化项目:
uv init test_uv # 初始化项目,就是cargo的翻版。
Initialized project `test-uv` at `D:\Code\Python\test_uv` # 执行结果
初始的项目文件如下,默认使用本机已经安装的python版本。
目录: D:\Code\Python\test_uv
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2025/8/3 19:51 109 .gitignore
-a---- 2025/8/3 19:51 5 .python-version
-a---- 2025/8/3 19:51 85 main.py
-a---- 2025/8/3 19:51 153 pyproject.toml
-a---- 2025/8/3 19:51 0 README.md
其中的pyproject.toml
记录项目元信息,比如项目名称和依赖等内容。
[project]
name = "test-uv"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.12"
dependencies = [
"requests>=2.32.4",
]
安装python的包很简单,直接使用uv
命令即可。会使用系统的默认python,并将其复制到当前目录的.venv
下,在其中安装包,避免干扰。
uv add requests
Using CPython 3.12.10 interpreter at: C:\Program Files\Python3\python.exe
Creating virtual environment at: .venv
Resolved 6 packages in 2.59s
Prepared 5 packages in 1.59s
░░░░░░░░░░░░░░░░░░░░ [0/5] Installing wheels...
Installed 5 packages in 38ms
+ certifi==2025.8.3
+ charset-normalizer==3.4.2
+ idna==3.10
+ requests==2.32.4
+ urllib3==2.5.0
如果遇到了warning: Failed to hardlink files; falling back to full copy. This may lead to degraded performance.
警告,是Windows系统的文件系统的问题,比如安装在C盘的python无法硬链接到D盘的目录中,可以设置一个名为UV_LINK_MODE
的环境变量,赋值为copy
,避免使用硬链接。
其他pip的命令,只需要在其之前添加uv
即可:
uv pip list # 查看当前安装的包
Package Version
------------------ --------
certifi 2025.8.3
charset-normalizer 3.4.2
idna 3.10
requests 2.32.4
urllib3 2.5.0
运行程序,也是cargo
的手感。非要说缺点的话,这里如果可以支持uv run
那就完美了。
uv run .\main.py
Hello from test-uv!
切换python版本也很简单,直接使用``
uv python list # 查看所有可用的python版本
python install 3.13 # 安装指定版本,这将安装在当前用户的目录下
其他常用命令
其他常见命令可以浏览uv
的官方文档,基本就是cargo
的习惯。
问题和注意事项
现在还是0.8.x版本,有一些不顺手的操作,比如刚才提到的uv run
;UV_LINK_MODE
的硬链接问题等。
此外,第三方支持力度也不够好,比如PowerShell的限制倒置VSCode无法解析python环境,虽然命令行可以正常工作。可以使用Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
解开这个限制。