news 2026/2/16 13:35:10

uv包管理工具

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
uv包管理工具

uv包管理工具笔记

1 介绍

uv 是一款用 Rust 编写的高性能 Python 包和项目管理工具,旨在为开发者提供一体化的开发环境管理方案,可替代pippip-toolspipxpoetrypyenvvirtualenv等多个工具。

其核心优势包括:

  • 极致速度:依赖解析和包安装速度比pip快 10-100 倍(基于官方基准测试),得益于 Rust 语言的高效性能。
  • 功能集成:集虚拟环境管理、依赖安装与锁定、Python 版本管理、工具临时运行等功能于一体。
  • 兼容性强:提供与pip兼容的接口(如uv pip install),可无缝迁移现有工作流。
  • 跨平台支持:适配 macOS、Linux、Windows 系统,且支持 Docker 等容器环境。
  • 现代工作流:支持 PEP 标准项目结构、依赖锁文件(uv.lock)、工作区管理等现代开发模式。

2 安装

uv 提供多种安装方式,可根据系统和场景选择:

2.1 独立安装器(推荐)

  • macOS/Linux

    # 安装最新版本curl-LsSf https://astral.sh/uv/install.sh|sh# 安装指定版本(如 0.9.17)curl-LsSf https://astral.sh/uv/0.9.17/install.sh|sh

    若系统无curl,可替换为wget

    wget-qO- https://astral.sh/uv/install.sh|sh
  • Windows(PowerShell)

    # 安装最新版本powershell-ExecutionPolicy ByPass-c"irm https://astral.sh/uv/install.ps1 | iex"# 安装指定版本(如 0.9.17)powershell-ExecutionPolicy ByPass-c"irm https://astral.sh/uv/0.9.17/install.ps1 | iex"

2.2 从 PyPI 安装

适合已安装 Python 环境的场景,建议用pipx隔离:

# 用 pipx 安装(推荐)pipxinstalluv# 用 pip 安装(可能影响全局环境)pipinstalluv

2.3 Docker 环境安装

在 Docker 中集成 uv 可通过两种方式:

# 方式 1:从官方镜像复制二进制文件(推荐,体积小) FROM python:3.12-slim-trixie COPY --from=ghcr.io/astral-sh/uv:0.9.17 /uv /uvx /bin/ # 方式 2:通过安装脚本 FROM python:3.12-slim-trixie RUN apt-get update && apt-get install -y --no-install-recommends curl ca-certificates ADD https://astral.sh/uv/0.9.17/install.sh /uv-installer.sh RUN sh /uv-installer.sh && rm /uv-installer.sh ENV PATH="/root/.local/bin/:$PATH"

2.4 手动下载安装

以Windows11操作系统为例:
从 GitHub 下载对应平台的压缩包 ,解压后得到 uv.exe、uvw.exe、uvx.exe,将文件路径添加到系统环境变量 PATH 即可。

验证安装

安装完成后,运行以下命令确认:

uv --version# 输出版本信息即表示成功

3 配置镜像源

uv 支持配置国内镜像源以提升下载速度,推荐使用阿里云、豆瓣、中科大等稳定源:

3.1 临时指定索引(单次命令)

通过--index-url参数临时使用镜像源:(以安装flask为例)

# 阿里云镜像uv pipinstallflask --index-url https://mirrors.aliyun.com/pypi/simple/ uvaddflask --index-url https://mirrors.aliyun.com/pypi/simple/# 豆瓣镜像uv pipinstallflask --index-url https://pypi.doubanio.com/simple/ uvaddflask --index-url https://pypi.doubanio.com/simple/# 中科大镜像uv pipinstallflask --index-url https://pypi.mirrors.ustc.edu.cn/simple/ uvaddflask --index-url https://pypi.mirrors.ustc.edu.cn/simple/

3.2 全局配置镜像源

通过环境变量或配置文件设置全局默认镜像:

方式1:环境变量

# macOS/LinuxexportUV_INDEX_URL=https://mirrors.aliyun.com/pypi/simple/# Windows PowerShell# 当前终端$env:UV_INDEX_URL="https://mirrors.aliyun.com/pypi/simple/"# 或永久生效[Environment]::SetEnvironmentVariable("UV_INDEX_URL","https://mirrors.aliyun.com/pypi/simple/","User")

方式2:配置文件
在用户配置目录创建 uv.toml 文件:

  • Linux/macOS: ~/.config/uv/uv.toml
  • Windows: %APPDATA%\uv\uv.toml
# uv.toml文件index-url="https://mirrors.aliyun.com/pypi/simple/"

3.3 项目级配置(推荐)

在项目根目录的pyproject.toml中配置,仅对当前项目生效:
[[tool.uv.index]] - 现代多索引配置

# 现代 uv 工作流推荐(影响 uv add/sync/run)# 定义主索引(豆瓣)[[tool.uv.index]]url="https://pypi.doubanio.com/simple/"default=true# 标记为默认主索引# 定义备用索引(阿里云)[[tool.uv.index]]url="https://mirrors.aliyun.com/pypi/simple/"# 定义专用索引# 专用索引1:pytorch-cpu[[tool.uv.index]]name="pytorch-cpu"url="https://download.pytorch.org/whl/cpu/"explicit=true# 只有指定 name 的包才会使用# 专用索引2:私有 GitLab 源[[tool.uv.index]]name="gitlab-private"url="https://gitlab.example.com/api/v4/projects/123/packages/pypi/simple"explicit=true# --- 关键部分:将包映射到对应的索引 ---[tool.uv.sources]# 格式:包名 = [{ index = "索引名" }]# [tool.uv.sources] 中的包名必须匹配 project.dependencies 中的名称torch=[{index="pytorch-cpu"}]private-package=[{index="gitlab-private"}]

配置优先级:项目级配置(pyproject.toml) > 环境变量 > 用户级配置(uv.toml)

3.5 验证配置

查看当前生效的镜像源:
查看当前项目的 pyproject.toml 中是否有 [tool.uv.pip] 配置段,镜像源信息会在此处定义:

# 方法1:查看环境变量echo$UV_INDEX_URL# Linux/macOSecho$env:UV_INDEX_URL# Windows PowerShell# 方法2:查看完整配置(包括所有来源)uv run --show-settings

注意:一般情况下,uv的cache目录会有默认缓存路径:

Linux: $HOME/.cache/uv macOS: /Users/<user>/Library/Caches/uv Windows: %LOCALAPPDATA%\uv\cache(通常是 C:\Users\<用户>\AppData\Local\uv\cache) 如果要修改缓存存放路径,可通过以下方式进行修改————
# Linux/macOS export UV_CACHE_DIR=/path/to/your/cache/dir # Windows(通过系统环境变量设置) # 新建系统变量 UV_CACHE_DIR,值为 D:\uv_cache 等路径

以Windows为例:

验证:uv cache dir

清空缓存

清理未使用的缓存:uv cache prune(删除无用包后释放空间) 彻底清空缓存:uv cache clean(删除整个缓存目录)

还有,更重要的一点是,uv也有默认的存放python解释器的路径,
它会将下载的python解释器默认存放到这个目录中:C:\Users\用户\AppData\Roaming\uv\python

所以,如果你想删除某个项目,或某个虚拟环境,所对应的python解释器是不会被删除的,因为虚拟环境引用的是其快捷方式,这恰恰揭示了 uv 高效缓存机制 的核心设计!

因此,如果你想修改uv默认存放python解释器的路径,可以这么做————

之后,uv所下载安装的python解释器,就会存放在你指定的目录中
可通过 uv python list 验证

4 创建Python项目(基于虚拟环境)

uv 提供简洁的项目初始化与虚拟环境管理流程,步骤如下:

4.1 初始化项目

在空目录中创建项目结构(生成pyproject.toml等文件):

# 方式一: 基本初始化(默认Python版本)uv init my_projectcdmy_project# 方式二: 指定Python版本初始化(如3.12)uv init my_project --python3.12cdmy_project

4.2 创建并激活虚拟环境

# 方式一: 在项目目录中创建虚拟环境(默认路径为 .venv)uv venv# 方式二: 自定义虚拟环境名uv venv 虚拟环境名# 激活环境(以默认虚拟环境名为例)# macOS/Linuxsource.venv/bin/activate# Windows# PowerShell.venv\Scripts\Activate.ps1# CMD 命令提示符.venv\Scripts\activate.bat# Git Bash / WSLsource.venv/Scripts/activate

4.3 添加依赖

# 添加生产依赖(自动更新 pyproject.toml 和 uv.lock)uvaddflask# 最新版本uvadd"requests>=2.31.0"# 指定版本约束uvadd"git+https://github.com/astral-sh/ruff"# 从Git仓库添加# 添加开发依赖(仅开发环境使用)uvadd--dev pytest# 测试工具uvadd--dev black# 代码格式化工具

小细节1:

通常情况下,在初始化项目的命令中,我们推荐采用上述方式二:uv init my_project --python 3.12 然而,虽然方式二指定了python解释器的版本,但是执行该命令后却不会立马进行下载安装该解释器 当执行该命令,uv会做以下两件事: 1. 创建项目结构:生成 pyproject.toml、.python-version 等文件 2. 记录版本要求:在 .python-version 文件中写入 3.12,作为项目的 Python 版本约束 因为,uv 采用惰性下载(lazy downloading)策略,只有当你执行需要实际使用 Python 解释器的命令时,才会检查并下载

小细节2:

有时候,我们会看到另一种写法: uv init my_project 【初始化项目不指定python解释器版本】 cd my_project uv venv --python 3.12 【在创建虚拟环境时指定python解释器版本】 .venv\Scripts\Activate.ps1 那么,pyproject.toml 无版本记录,约束仅生效一次,所以是不大推荐的

因此,我们更倾向于方式二的写法

小细节3:

如果,我们不指定python解释器的版本【uv init命令中不指定,uv venv命令中也不指定】 那么,最终会采用内置的 fallback 版本(如 uv 0.9.17 的Python 版本为3.12)

4.4 将创建好的项目在PyCharm中打开

4.4.1 File – > Open – > 项目名

4.4.2 配置环境变量中的解释器



4.4.3 打开PyCharm终端验证是否已激活对应的虚拟环境

4.5 生成依赖锁文件

基于pyproject.toml生成锁定文件(确保依赖版本一致):

uv lock

手动锁定,生成的uv.lock记录了所有依赖的精确版本,适合团队协作和部署。
一般情况下,uv add命令会自动更新 pyproject.toml 和 uv.lock

4.6 同步环境

根据锁文件安装依赖到虚拟环境(确保环境一致性):
如果锁文件与 pyproject.toml 不一致则报错

uvsync--locked# 严格按照锁文件安装

4.7 运行项目

通过uv run在虚拟环境中运行脚本或命令:

# 运行Python脚本uv run main.py# 运行安装的工具(如pytest)uv run pytest tests/

5 其他常见命令

5.1 包管理(兼容 pip 接口)

安装指定版本:uv pip install “flask==2.3.3”
卸载包:uv pip uninstall flask
冻结依赖(生成 requirements.txt):uv pip freeze > requirements.txt
同步 requirements.txt:uv pip sync requirements.txt
编译依赖(从 .in 文件生成 .txt):uv pip compile requirements.in --output requirements.txt

5.2 项目管理

移除依赖:uv remove flask(从 pyproject.toml 中移除)
查看依赖树:uv tree(展示项目依赖关系)
格式化代码:uv run ruff format .(需先添加 ruff/black 等工具)
构建包:uv build(生成 sdist 和 wheel 包)
发布包:uv publish(上传到 PyPI 或指定索引)

5.3 工具运行(类似 pipx)

临时运行工具(无需安装):uvx black --version(直接运行 black)
安装工具到用户目录:uv tool install ruff(全局可用,不污染项目环境)

5.4 Python 版本管理

安装指定 Python 版本:uv python install 3.11 3.12
锁定当前目录 Python 版本:uv python pin 3.11(生成 .python-version 文件)
查看已安装版本:uv python list

5.5 查看当前项目安装了哪些包

命令适用场景显示内容优点缺点
uv pip list传统 pip 工作流包名和版本简单直接,支持--outdated不显示依赖关系
uv tree现代项目工作流依赖树结构清晰展示依赖关系需 pyproject.toml
uv.lock精确版本核查精确锁定版本和哈希最精确,适合CI/CD可读性较差
uv pip freeze环境导出requirements 格式兼容 pip 生态不显示间接依赖

6 与 pip、conda、pdm 工具的对比

特性uvpipcondapdm
核心定位全功能 Python 包/项目管理器基础 Python 包安装工具跨语言包/环境管理器(支持 Python、C++ 等)现代 Python 项目管理器(PEP 621 支持)
速度极快(Rust 实现,10-100x 于 pip)较慢(Python 实现)中等(依赖解析复杂)较快(Rust 优化部分逻辑)
虚拟环境原生支持(uv venv依赖venvvirtualenv原生支持(环境隔离性强)原生支持(pdm venv
依赖锁定支持(uv.lock,平台无关)需配合pip-tools生成requirements.txt支持(environment.yml支持(pdm.lock
Python 版本管理原生支持(uv python不支持(依赖pyenv等工具)原生支持(conda install python=3.11需配合pyenv等工具
多语言支持仅 Python仅 Python支持(Python、R、C++ 等)仅 Python
兼容性兼容 pip 接口(uv pip标准接口,生态最广部分 Python 包需适配 conda 渠道兼容 pip 包,支持 PEP 标准
适用场景追求速度和一体化管理的 Python 项目简单包安装、脚本依赖多语言项目、科学计算(依赖 C 库)现代 Python 项目(PEP 621 优先)

总结
uv
适合需要高效依赖管理、替代多工具(如同时需要 pip、pipx、pyenv)的 Python 开发者,尤其在大型项目中能显著提升效率;
conda
更适合跨语言或依赖复杂系统库的场景(如科学计算);
pdm
专注于 Python 现代项目规范(如 PEP 621),适合追求标准化的团队;
pip
仍是最基础的包安装工具,适合简单脚本或快速验证场景。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/12 2:33:57

景杰生物智慧实验室再添利器,第五台Astral仪器赋能科研新征程

近日&#xff0c;景杰生物智慧实验室再次传来喜讯。伴随着第五台Astral质谱仪入驻运行&#xff0c;景杰10X Proteomics平台再添利器&#xff0c;将为客户项目提供高质量产能保障&#xff0c;也为景杰智慧实验室的建设增添了浓墨重彩的一笔。截止目前&#xff0c;景杰10X Proteo…

作者头像 李华
网站建设 2026/2/12 4:24:47

2026最新!华为认证超全解析,HCIA、HCIP、HCIE一篇说全!

咱说实话哈&#xff0c;想在IT行业稳稳当当站住脚&#xff0c;光靠那股子热情和冲劲可不行&#xff0c;还得有过硬的技术和资历才行。 华为认证&#xff0c;在业内那可是公认的“技术通行证”&#xff0c;好多人就靠着它才敲开了职场的大门。你去看看就知道&#xff0c;现在越来…

作者头像 李华
网站建设 2026/2/16 19:56:28

别再让尾货吃掉你的利润!超快消平台,正是数十万商家的共同答案

库存积压&#xff0c;资金冻结&#xff0c;临期产品如同定时炸弹…这不仅是困扰&#xff0c;更是利润被无声吞噬的真相。 “仓库里那3000箱还有两个月到期的饮料&#xff0c;就像一块巨石压在我心上。以前只能眼巴巴看着它们过期&#xff0c;最后含泪销毁&#xff0c;每一瓶都是…

作者头像 李华
网站建设 2026/2/16 14:58:21

一条爆款短视频,背后是AI超级工场的“智”造革命

一条爆款短视频&#xff0c;背后是AI超级工场的“智”造革命 你是否好奇&#xff0c;那些让人忍不住下单的家居服爆款短视频&#xff0c;究竟是如何诞生的&#xff1f;从创意灵光到席卷全平台&#xff0c;其背后可能并非单纯的运气&#xff0c;而是一场由AI驱动的“智”造革命。…

作者头像 李华
网站建设 2026/2/16 15:02:35

MATLAB 数据可视化神器:Plot、Heatmap、Surface 图完整进阶指南

&#x1f3af; 前言&#xff1a;为什么要学 MATLAB 数据可视化&#xff1f;MATLAB 的可视化能力是业内公认的强项&#xff0c;尤其在&#xff1a;科研论文绘图工程数据分析信号处理 / 图像处理实验结果呈现中具有极高使用率。本教程将带你从 零基础入门 到 掌握高质量绘图技巧&…

作者头像 李华
网站建设 2026/2/15 19:10:26

中医药特色的“互联网+”智慧养老新模式:让千年智慧照进晚年日常

有次&#xff0c;杭州拱墅区的陈老伯在公园缓缓打出八段锦的第一式&#xff0c;手腕上的智能脉诊仪同步记录着他的脉象数据。千里之外的中医体质辨识平台&#xff0c;正根据他过去一周的睡眠、饮食、运动及脉象变化&#xff0c;生成个性化的“节气养生方案”。这一幕&#xff0…

作者头像 李华