从零开始掌握 uv:新一代超快 Python 项目与包管理器(含 Windows 支持)

从零开始掌握 uv:新一代超快 Python 项目与包管理器(含 Windows 支持)

在 Python 开发的世界里,包管理长期以来是一个"碎片化"的领域:pip 用于安装、virtualenv 用于环境隔离、pip-tools 用于依赖锁定、poetryrye 用于项目管理、pipx 用于工具安装......每个工具都有自己的配置方式和使用习惯,初学者常常感到困惑,而资深开发者也疲于在不同工具间切换。

2024 年,Astral 团队(Ruff 的作者)带来了一个革命性的解决方案:uv ------ 一个用 Rust 编写的、极速的 Python 包与项目管理器。它不仅快如闪电(比 pip 快 10--100 倍),还试图统一整个 Python 工具链。本文将带你由浅入深,从安装到实战,全面掌握 uv 的核心能力,并特别包含 Windows 环境下的完整操作指南


一、什么是 uv?为什么值得关注?

uv 是一个开源的 Python 工具链替代品,目标是"一个工具,搞定一切"。它集成了以下工具的功能:

  • pip:安装包
  • pip-tools:生成 lockfile
  • virtualenv:创建虚拟环境
  • poetry / rye:项目依赖管理
  • pipx:安装和运行 CLI 工具
  • pyenv:管理 Python 版本(实验性支持)
  • twine:发布包

更令人惊叹的是性能:在缓存命中的情况下,安装像 trio 这样的复杂依赖,uv 比 pip 快数十倍。这一切得益于其用 Rust 编写的核心,以及精心设计的全局缓存机制,实现依赖去重,节省磁盘空间。

uv 支持 macOS、Linux 和 Windows ,并且无需预先安装 Rust 或 Python


二、Windows 下安装 uv

方法一:使用 PowerShell 安装(推荐)

  1. 以管理员身份打开 PowerShell(非必需,但可避免权限问题)。
  2. 执行官方安装脚本:
powershell 复制代码
irm https://astral.sh/uv/install.ps1 | iex

运行结果:

复制代码
Downloading uv 0.8.22 (x86_64-pc-windows-msvc)                                                                          Installing to C:\Users\DELL\.local\bin
  uv.exe
  uvx.exe
  uvw.exe
everything's installed!

To add C:\Users\DELL\.local\bin to your PATH, either restart your shell or run:

    set Path=C:\Users\DELL\.local\bin;%Path%   (cmd)
    $env:Path = "C:\Users\DELL\.local\bin;$env:Path"   (powershell)

💡 irmInvoke-RestMethod 的缩写,iexInvoke-Expression 的缩写。

  1. 安装完成后,重启终端 (或执行 refreshenv,如果你安装了 scoopchocolatey),使 PATH 生效。

  2. 验证安装:

powershell 复制代码
uv --version

你应该看到类似输出:uv 0.5.0 (a1b2c3d4 2025-09-29)

运行结果:

复制代码
C:\Users\DELL>uv --version
uv 0.8.22 (ade2bdbd2 2025-09-23)

方法二:通过 pip 安装(如果你已有 Python)

powershell 复制代码
pip install uv

⚠️ 注意:这种方式安装的 uv 依赖于当前 Python 环境,性能略逊于原生二进制版本,但功能完全一致。

方法三:手动下载(适用于离线环境)

  1. 访问 uv GitHub Releases
  2. 下载适用于 Windows 的压缩包(如 uv-windows-x86_64.zip
  3. 解压后将 uv.exe 所在目录加入系统 PATH 环境变量

三、Windows 下快速上手:创建并运行项目

1. 初始化项目

powershell 复制代码
D:\python_projects>uv init uv_demo
Initialized project `uv-demo` at `D:\python_projects\uv_demo`

这会生成:

  • pyproject.toml(项目元数据)

  • .gitignore

  • README.md

  • src/myproject/__init__.py

    D:\python_projects>cd uv_demo

    D:\python_projects\uv_demo>dir
    驱动器 D 中的卷是 新加卷
    卷的序列号是 66C3-87A8

    D:\python_projects\uv_demo 的目录

    2025/09/29 21:46 <DIR> .
    2025/09/29 21:46 <DIR> ..
    2025/09/29 21:46 5 .python-version
    2025/09/29 21:46 85 main.py
    2025/09/29 21:46 153 pyproject.toml
    2025/09/29 21:46 0 README.md
    4 个文件 243 字节
    2 个目录 299,954,900,992 可用字节

2. 添加依赖

powershell 复制代码
D:\python_projects\uv_demo>uv add requests
Using CPython 3.11.5 interpreter at: D:\python311\python.exe
Creating virtual environment at: .venv
Resolved 6 packages in 8.94s
Prepared 5 packages in 4.87s
░░░░░░░░░░░░░░░░░░░░ [0/5] Installing wheels...                                                                         warning: Failed to hardlink files; falling back to full copy. This may lead to degraded performance.
         If the cache and target directories are on different filesystems, hardlinking may not be supported.
         If this is intentional, set `export UV_LINK_MODE=copy` or use `--link-mode=copy` to suppress this warning.
Installed 5 packages in 17ms
 + certifi==2025.8.3
 + charset-normalizer==3.4.3
 + idna==3.10
 + requests==2.32.5
 + urllib3==2.5.0

uv 会自动:

  • 在当前目录创建 .venv 虚拟环境(无需手动激活)
  • 解析并安装 requests 及其依赖
  • 更新 pyproject.tomluv.lock

输出示例(Windows 下同样极速):

复制代码
Resolved 5 packages in 210ms
Prepared 5 packages in 480ms
Installed 5 packages in 2ms
 + requests==2.32.3
 + myproject==0.1.0

3. 运行代码

创建 /uv_demo/main.py

python 复制代码
def main():
    print("Hello from uv-demo!")
    import requests
    print("Status:", requests.get("https://httpbin.org/status/200").status_code)

if __name__ == "__main__":
    main()

然后运行:

powershell 复制代码
D:\python_projects\uv_demo>uv run python -m main

✅ 注意:Windows 下无需担心路径分隔符或激活脚本,uv run 自动处理一切。

复制代码
Hello from uv-demo!
Status: 200

四、Windows 特别提示

虚拟环境位置

uv 默认在项目根目录下创建 .venv 文件夹(与 poetry 行为一致),你可以在 Windows 资源管理器中直接看到它。

脚本模式(Script Mode)在 Windows 同样可用

powershell 复制代码
echo 'import requests; print(requests.get("https://astral.sh"))' > example.py
uv add --script example.py requests
uv run example.py

uv 会为该脚本自动创建隔离环境,无需管理员权限 ,也不会污染全局 Python

工具运行(uvx)

再运行一个pycowsay工具:

复制代码
D:\python_projects\uv_demo>uvx pycowsay "Hello from Windows!"

  -------------------
< Hello from Windows! >
  -------------------
   \   ^__^
    \  (oo)\_______
       (__)\       )\/\
           ||----w |
           ||     ||

首次运行会自动下载并缓存,后续调用几乎瞬时完成。

与 Windows Terminal / VS Code 集成

  • VS Code 中打开项目后,选择解释器时可指向 .venv\Scripts\python.exe
  • uv run 命令可直接在 VS Code 终端中使用,无需额外配置

五、核心功能(跨平台通用)

以下功能在 Windows、macOS、Linux 上行为一致:

1. 项目依赖管理

  • uv lock:生成 uv.lock
  • uv sync:根据 lockfile 同步环境
  • 支持 Cargo-style workspaces(多包项目)

2. 兼容 pip

powershell 复制代码
uv pip install numpy pandas

可直接替换现有工作流,获得性能提升。

3. 构建与发布

powershell 复制代码
uv build      # 生成 .tar.gz 和 .whl
uv publish    # 上传到 PyPI

六、为什么选择 uv?(尤其对 Windows 用户)

  • 无需 WSL:原生支持 Windows,性能不打折
  • 告别 venv\Scripts\activate.batuv run 自动处理环境
  • 安装简单:一行 PowerShell 命令搞定
  • 极速体验:即使在 NTFS 文件系统上,依然比 pip 快一个数量级
  • 节省空间 :全局缓存避免重复下载(缓存位于 %LOCALAPPDATA%\uv

七、结语

uv 正在重新定义 Python 的开发体验,无论你使用的是 Windows、macOS 还是 Linux。对于长期被 Python 工具链"割裂"困扰的 Windows 开发者来说,uv 提供了一个统一、快速、可靠的解决方案。

现在就打开 PowerShell,试试这个改变游戏规则的工具吧:

powershell 复制代码
irm https://astral.sh/uv/install.ps1 | iex
uv init hello-uv
cd hello-uv
uv add rich
echo "import rich; rich.print('✨ Hello from uv on Windows!')" > demo.py
uv run python demo.py

未来已来,而它快得惊人。


参考资料

相关推荐
辰哥单片机设计2 小时前
UV紫外线消毒灯详解(STM32)
stm32·uv
浔川python社2 小时前
浔川 AI 翻译 v7.0正式上线公告
python
Wiktok2 小时前
【WIT】ttkbootstrap全组件中文本地化解决方案
python·ttkbootstrap
熊猫钓鱼>_>2 小时前
PySpark全面解析:大数据处理的Python利器
开发语言·python
王嘉俊9253 小时前
Django 入门:快速构建 Python Web 应用的强大框架
前端·后端·python·django·web·开发·入门
小丁爱养花3 小时前
接口自动化测试 - pytest [1]
python·自动化·pytest
xiaopengbc3 小时前
泛型在Java集合框架中的应用有哪些?
java·开发语言·python
萧鼎4 小时前
深入理解 Python `ssl` 库:安全通信的基石
python·安全·ssl
十五年专注C++开发4 小时前
通信中间件 Fast DDS(三) :fastddsgen的安装与使用
linux·c++·windows·中间件·跨平台