怕刺 - uv
type: channel
link: https://pa.ci/tag/uv/
items: uv：新一代Python包和项目管理工具

uv：新一代Python包和项目管理工具
type: item
date: 2025-08-03T12:18:00+00:00
description: 写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 in…