关于uv 工具的使用总结(uv,conda,pip什么关系)

最近要开发MCP 项目,uv工具使用是官方推荐的方式,逐要了解这个uv工具。整体理解如下:

一.uv工具的基本情况

UV 是一个由 Rust 编写的现代化 Python 包管理工具,旨在通过极速性能和一体化功能替代传统工具(如 pip、virtualenv、pip-tools 等),覆盖依赖管理、虚拟环境创建、项目配置、依赖锁定等全流程操作。其核心优势在于速度极快 (比 pip 快 10-100 倍)、兼容现有生态 (支持 requirements.txtpyproject.toml),且提供一站式解决方案(无需多工具切换)。

二、uv 与conda 什么关系

uv类似pip 和virtualenv等工具的集合

1.uv创建虚拟环境下,与conda的区别UV 不会自动安装 Python 解释器

UV 的 uv venv 命令在创建虚拟环境时,会生成.venv的文件,依赖于系统中已安装的 Python 解释器 。它的行为类似于 Python 自带的 venv 模块:

  • 若当前已激活某个 Python 环境(如通过 Conda 或 pyenv 安装的 Python),UV 会基于该环境的解释器创建虚拟环境。

  • 若未激活任何环境,UV 默认使用系统的全局 Python 解释器。

  • 可以指定已经存在的python解释器:如何指定 Python 版本? 若需使用特定版本的 Python,需 提前通过其他工具安装该版本 (如 pyenv、Conda 或系统包管理器),再通过 --python 参数指定路径:

    复制代码
    如  uv venv .venv --python /bin/python

2.如果用conda创建虚拟环境下,也可以使用uv工具进行python包的管理,

在 Conda 环境中使用 UV

  1. 角色定位

    • ✅ 正确:在 Conda 环境中,UV 可替代 pip,提供更快的包安装和依赖解析,但 不会创建新的虚拟环境 (如 .venv)。

    • ⚠️ 关键补充:必须通过 conda activate 显式激活目标环境,否则 uv run 可能误判环境(如切换到项目中的 .venv)。

  2. 依赖管理分工

    • ✅ 正确:Conda 负责管理 Python 解释器版本、非 Python 依赖(如 CUDA、系统库)

    • ✅ 正确:UV 负责管理 纯 Python 包 (如 numpyrequests),且依赖关系可写入 pyproject.tomlrequirements.txt

三、uv add 和uv pip install的区别

uv adduv pip install 是 UV 工具中两个关键命令,它们虽然都能安装 Python 包,但设计目标和适用场景有显著区别。以下是详细对比:

功能定位对比

命令 核心功能 适用场景
uv add 将依赖声明写入 pyproject.toml 并安装包,支持分组(生产/开发依赖)。 项目管理:需要记录依赖到配置文件。
uv pip install 直接安装包到当前环境,行为与 pip install 一致,但速度更快。不修改任何配置文件。 临时操作:快速安装或调试,无需持久化依赖。

这个pyproject.toml 文件是记录相关依赖库信息的文件,有点类似pip下的requirements.txt,

利用这个文件,可以进行项目管理

安装生产依赖:

复制代码
uv install --only main 
  • 安装所有依赖(包括开发依赖)

    uv install

四、uvx是什么工具命令

临时运行工具 :​uvx 会在隔离的虚拟环境中临时安装并运行指定的工具,执行完毕后该环境会被清理。

  • 快速试用工具:​适用于快速试用某个工具或运行一次性的任务,而无需在系统中永久安装该工具。​

  • 支持版本指定 :​可以指定工具的版本,例如:​Astral Docs+1Astral Docs+1

复制代码
相关推荐
喵手4 小时前
Python爬虫实战:硬核解析 Google Chrome 官方更新日志(正则+文本清洗篇)(附 CSV 导出)!
爬虫·python·爬虫实战·零基础python爬虫教学·csv导出·监控谷歌版本发布历史·获取稳定版更新日志
小邓睡不饱耶4 小时前
实战|W餐饮平台智能化菜品推荐方案(含Spark实操+算法选型+完整流程)
python·ai·ai编程·ai写作
草莓熊Lotso4 小时前
Qt 主窗口核心组件实战:菜单栏、工具栏、状态栏、浮动窗口全攻略
运维·开发语言·人工智能·python·qt·ui
aiguangyuan4 小时前
基于BiLSTM-CRF的命名实体识别模型:原理剖析与实现详解
人工智能·python·nlp
禹凕4 小时前
Python编程——进阶知识(MYSQL引导入门)
开发语言·python·mysql
阿钱真强道4 小时前
13 JetLinks MQTT:网关设备与网关子设备 - 温控设备场景
python·网络协议·harmonyos
我的xiaodoujiao4 小时前
使用 Python 语言 从 0 到 1 搭建完整 Web UI自动化测试学习系列 47--设置Selenium以无头模式运行代码
python·学习·selenium·测试工具·pytest
寻星探路10 小时前
【深度长文】万字攻克网络原理:从 HTTP 报文解构到 HTTPS 终极加密逻辑
java·开发语言·网络·python·http·ai·https
ValhallaCoder13 小时前
hot100-二叉树I
数据结构·python·算法·二叉树
猫头虎14 小时前
如何排查并解决项目启动时报错Error encountered while processing: java.io.IOException: closed 的问题
java·开发语言·jvm·spring boot·python·开源·maven