UV-Python包高效管理工具

devtools/2025/3/30 5:36:08/

介绍

uv 是一个 极快的 Python 包管理器,兼容 pip / virtualenv / pyproject.toml,专注于:

• 🚀 极速安装依赖(比 pip 快几十倍)

• 📦 支持 requirements.txt 和 pyproject.toml

• 🧱 内置虚拟环境(不依赖 venv)

• 🔒 完整的依赖锁定机制(支持 uv pip compile)

• 💡 使用 Rust 编写,性能强悍

功能pipuv
安装速度超快(基于 Rust)
支持锁文件uv pip compile
创建虚拟环境需手动✅ 自动内置
多平台一致性一般✅ 通过 .lock 保证
安装缓存优化一般✅ 强缓存系统

使用方法

安装说明

python"># 安装 uv
curl -Ls https://astral.sh/uv/install.sh | bash
按照环境位置
vim ~/.zshrc
export PATH="$HOME/.local/bin:$PATH"
source ~/.zshrc
which uv     # 应该返回 /opt/homebrew/bin/uv 或 ~/.local/bin/uv
uv --version
# 安装依赖(自动创建虚拟环境)
uv pip install -r requirements.txt# 添加依赖
uv pip install requests# 升级依赖
uv pip install --upgrade requests# 卸载依赖
uv pip uninstall requests# 生成锁文件
uv pip compile requirements.in > requirements.lock.txt

如下所示:

python">(.venv) ➜  ai_tools_show git:(main) uv --version
uv 0.6.9 (3d9460278 2025-03-20)
(.venv) ➜  ai_tools_show git:(main) uv venv
Using CPython 3.12.4 interpreter at: /Users/jacinlee/miniconda3/bin/python
Creating virtual environment at: .venv
Activate with: source .venv/bin/activate
(.venv) ➜  ai_tools_show git:(main) 

uv 是通过 当前终端的 pythonpython3 路径 来决定使用哪个解释器的。也就是说它会执行:

which python

在你的终端当前环境中,这个指向的是 Anaconda 的 Python。

uv 创建或激活一个 Python 3.12 的虚拟环境,并让它成为这个项目的默认环境。下面是你的完整操作流程:

python">which -a python3.12

uv 会使用你指定的 Python 版本创建虚拟环境。命令如下:

python">uv venv --python=python3.12

或者显式:

python">uv venv --python=/usr/local/bin/python3.12

激活:

python">source .venv/bin/activate

如果一个项目已经有了requirements.txt了,那么在不破坏已有项目的情况下迁移到 uv + pyproject.toml,可以按下面步骤平滑过渡

python">uv init --python=3.12>>>>>输出
Initialized project `ai-tools-show`

然后生成了两个文件:分别是.python-version pyproject.toml文件了

python">uv pip install -r pyproject.tomluv pip install fastapi --add 
自动写入 pyproject.toml 的 [project.dependencies] 区块或者:
# 第一步:安装
uv add -r requirements.txtuv add fastapi# 第二步:同步写入 pyproject.toml
uv pip freeze --add
命令作用
uv pip install -r requirements.txt只安装依赖,不写入 pyproject.toml
uv add fastapi安装并写入 pyproject.toml
uv add -r requirements.txt从 requirements.txt 添加所有依赖到 pyproject.toml
uv pip freeze查看当前环境依赖(不写入文件)

解释器共享,但 依赖隔离

这和 Java 的 Maven、Node.js 的 npm/yarn 是一样的逻辑:
• 全局只安装一次 Java / Node 解释器
• 每个项目单独维护自己的 pom.xml 或 package.json,从而下载独立依赖

Python 生态 默认推荐的是 venv/virtualenv,也就是每个项目一个 Python + 依赖。

不过你可以选择 只共享 Python 解释器,依赖用 .venv 隔离:

python"># 使用系统安装的 Python3.12,但不复制它,仅链接用
uv venv --python=python3.12

引用系统安装的 Python,而不是复制它。这样多个项目可以共用 interpreter,只隔离依赖(site-packages)。

你可以通过这个命令验证解释器路径:

python">which python
# 或者
python -c "import sys; print(sys.executable)"
方案是否共享解释器是否隔离依赖说明
uv venv --python=python3.12✅ 是(可指定)✅ 是推荐 ✅
python3.12 -m venv .venv✅ 是✅ 是标准 Python 工具
不用 venv,直接 pip install✅ 是❌ 否不推荐 ❌
Java/Maven✅ 是✅ 是(按 .m2/repo)类似
Node/npm✅ 是✅ 是(按 node_modules)类似
工具本质作用谁开发的管理的内容
pipPython 官方包管理工具Python 官方PyPI 上的纯 Python 包
conda科学计算生态的包管理工具Anaconda Inc.Python + C依赖等混合包
uv新一代超快包管理工具Astral.shPyPI 包(兼容 pip)
对比项uvpipconda
📦 包源PyPIPyPIConda Forge / 默认 channel
🏃‍♂️ 安装速度🚀 极快(Rust 实现)中等较慢(依赖解算开销大)
🧠 依赖解决能力✅ 强(支持锁定)❌ 差(依赖冲突常见)✅ 强(可以混合 C 依赖)
🐍 虚拟环境管理✅ 内置 uv venv❌ 无(需配合 venv 使用)✅ 内置 conda env
🔐 锁文件支持uv.lock❌ 无原生锁(需用 pip-tools)✅ environment.yml + reproducible
📁 依赖隔离✅ 每项目 .venv❌ 手动做(无自动隔离)✅ 自动(但体积大)
🧩 原生支持 C 库❌ 仅纯 Python❌ 需编译器 / wheels✅ 非常擅长(如 NumPy, pandas)
💡 初学友好✅ 简洁✅ 简洁❌ 学习曲线陡(路径管理复杂)
🔥 推荐场景🚀 Web/AI 项目,现代工程流📦 通用 Python 包管理🔬 科研环境(需 C/Fortran 库)
FastAPI、Web 开发uv快速、干净、现代依赖锁定,适配 venv,构建速度远超 pip
通用 Python 包管理pip够用,兼容性强,但需手动解决依赖冲突
科研、数值计算(如pandas)conda内置 C/FORTRAN 包,安装 NumPy、SciPy 更稳定
多项目/CI/CD 构建uv + rye支持锁文件、项目隔离、解释器管理,部署方便

依赖冲突

什么是“依赖冲突”?怎么发生的?

python">pip install A B
•	A 依赖 requests==2.26
•	B 依赖 requests>=2.28

这就冲突了 —— 你装不了两个版本的 requests,系统无法决定到底该装哪一个。

传统 pip 在这时会直接报错或装错版本,而 uv / poetry 等现代工具就能更智能地解决。

⛓️ 求解图算法优化更快找到符合所有 constraints 的版本组合
📦 全图解析不止解析你显式安装的库,还会分析它们的子依赖
✅ 严格锁定避免每次安装版本漂移(版本浮动)的
pipuv(或 poetry 等)
逐步解析安装全部构建依赖树后一起解析
安装中才发现冲突安装前就先解依赖,确认无误
无法锁定版本会生成精确版本锁文件 uv.lock

• ❌ pip 会冲突失败(或安装错版本)

• ✅ uv 会告诉你版本冲突,并给出冲突路径:

❗ Conflict: some-lib requires requests>=2.28, but you have requests==2.26.


http://www.ppmy.cn/devtools/171498.html

相关文章

直观理解ECC椭圆曲线加密算法

数学还是挺有逻辑的,给出计算的操作步骤 就能得出想要结果 背景: ● ECC 是一种极其巧妙的 非对称加密算法 , 其完美利用了 椭圆曲线几何累加 不可逆的性质 ● 拥有 密钥体积小,计算速度快的优势,被广泛用于各种区块链&#xff0c…

PhotoShop学习02

1.添加文本 这个工具栏是文字工具栏,快捷键是T。选择之后鼠标会变成一个竖杠外貌,我们可以借此在图片中写入文字。 选择后,上方的工具栏会变为专门调整文字工具 这个框点击旁边的小箭头可以选择我们我们电脑系统自带的字体,同时可…

UDS诊断、ECU刷写、自动化测试、车联网测试、DTC故障注入测试、坏境测试、可靠性测试、压力测试、性能测试等

每日直播时间:(直播方式:腾讯会议) 周一到周五:20:00-23:00 周六与周日:9:00-17:00 向进腾讯会议学习的,可以关注我并后台留言 直播内容&#xff…

llama源码学习·model.py[4]Attention注意力(1)原理

一、计算Query\Key\Value向量 图片来自https://jalammar.github.io/illustrated-transformer/ 在自注意力机制中,输入是一个序列的向量表示,每个向量都要被转换为三个不同的向量: Q u e r y Query Query(查询)向量、 K…

vue设置自定义logo跟标题

准备 Logo 图片 将自定义的 Logo 图片(如 logo.png)放置在项目的 public文件夹下。 使用环境变量设置 Logo 和标题(可选) 创建或修改 .env 文件 在项目根目录下创建或修改 .env 文件,添加以下内容: VITE_A…

adb 如何导出手机的文件

目录 1. 开启USB调试 2. 连接设备 3. 启动ADB 4. 导出文件 使用adb pull命令 5. 可视化工具预览 adb(Android Debug Bridge)是Android开发中常用的一个工具,它允许开发者通过电脑与Android设备进行通信。如果你想通过adb导出手机上的文…

如何用docker搭建php环境

要使用 Docker 搭建 PHP 环境,可以按照以下步骤进行: 1. 安装 Docker 首先,确保你的系统上已经安装了 Docker。如果没有安装,可以参考 [Docker 官方文档](https://docs.docker.com/get-docker/) 进行安装。 2. 拉取 PHP 和 Nginx…

Ant Design Vue Select 选择器 全选 功能

Vue.js的组件库Ant Design Vue Select 选择器没有全选功能&#xff0c;如下图所示&#xff1a; 在项目中&#xff0c;我们自己实现了全选和清空功能&#xff0c;如下所示&#xff1a; 代码如下所示&#xff1a; <!--* 参数配置 - 风力发电 - 曲线图 * 猴王软件学院 - 大强 …