当前位置: 首页 > news >正文

Python 包管理新选择:全面了解 uv(附 Conda 对比)

在 Python 的世界里,我们常用 pip 安装依赖,用 venv 创建虚拟环境,还可能用 pip-tools 来生成锁文件。这些工具虽然灵活,但组合使用时也容易让人混乱。最近,一个名叫 uv 的新工具火了起来,目标是统一和简化整个 Python 包管理流程。

uv 是什么?

uv 是由 Astral 开发的一个超快的 Python 包管理器,用 Rust 编写。它旨在作为 pippip-toolsvirtualenvpython-build 的整合替代品。

主要特点:

  • 🚀 极致性能:安装速度比传统 pip 快数倍

  • 📦 自带虚拟环境管理:无需再手动创建 .venv

  • 🔒 支持依赖锁定:自动生成兼容的 lock 文件

  • 🧰 一体化工具链:不再需要搭配多个工具

  • 🐍 支持多 Python 版本管理(重点!)

安装 uv(支持 Windows / macOS / Linux)

🖥 macOS

brew install uv

🐧 Linux

官方脚本(推荐)
curl -Ls https://astral.sh/uv/install.sh | bash

🪟 Windows

手动下载可执行文件

前往 GitHub Releases 下载 .exe 并添加到 PATH。

基本用法入门

创建虚拟环境

uv venv

安装依赖

uv pip install requests

锁定依赖

uv pip compile -o requirements.txt

同步环境

uv pip sync

启动项目解释器

uv python

管理多个虚拟环境

uv 使用“每个项目一个 .venv”的方式来隔离环境。每个项目创建并激活自己的虚拟环境,无需集中管理:

# 项目 A
cd ~/projects/a
uv venv
uv pip install flask# 项目 B
cd ~/projects/b
uv venv
uv pip install numpy

激活虚拟环境

source .venv/bin/activate    # macOS/Linux
.venv\Scripts\activate       # Windows

或者直接使用:

uv python

多 Python 版本管理

这是 uv 的杀手级功能之一:无需 pyenv 或 Conda,即可为每个项目使用不同的 Python 版本!

创建指定版本的虚拟环境

uv venv --python 3.11

如你未本地安装该版本,uv 会自动下载并缓存构建:

uv venv --python 3.9.18

查看本地缓存的 Python 版本

uv runtimes list

卸载某个版本以释放空间

uv runtimes uninstall 3.10.5

Python 缓存目录

  • macOS/Linux: ~/.cache/uv

  • Windows: %LOCALAPPDATA%\uv

示例:快速搭建 Flask 项目

uv venv --python 3.11
uv pip install flask
echo "flask" > requirements.in
uv pip compile
uv pip sync

uv 与 Conda 的对比

功能uvconda
语言支持仅 PythonPython + 多语言(R, C++, Java)
包源PyPIConda 镜像 / Anaconda Cloud
虚拟环境管理基于 .venv使用 Conda 环境
安装速度🚀 非常快(Rust 编写)🐢 较慢(特别是首次)
系统级依赖❌ 不支持✅ 支持(如 MKL, BLAS)
锁文件支持✅ 是❌ 原生不支持
安装第三方工具uv pip install blackconda install black 或 pip
适用场景轻量开发,Web 项目,CI/CD数据科学,科研,多语言依赖

总结

如果你是:推荐工具
Web/Python 项目开发者,追求速度和简单✅ 使用 uv
科学计算/数据分析/需要 C 库和跨语言依赖✅ 使用 conda

uv 的出现,让 Python 包管理回归简洁又强大,保留了 pip 的生态,却提供了 Conda 级别的体验。

参考链接

  • 官方项目主页:https://github.com/astral-sh/uv

  • 官方博客:Blog | Astral

  • Conda 文档:https://docs.conda.io

  • pipx 项目:https://github.com/pypa/pipx

http://www.lqws.cn/news/476191.html

相关文章:

  • 931、下降路径最小和
  • 硬件面经-具身机器人通用技术要求
  • Flink SQL Connector Kafka 核心参数全解析与实战指南
  • vue3 el-table 行字体颜色 根据字段改变
  • Flink SourceFunction深度解析:数据输入的起点与奥秘
  • Flink作业三种部署模式:架构、配置与实战应用
  • C++主要知识点详解(引用,内联函数)
  • webpack+vite前端构建工具 - 8 代码分割
  • 生成器函数概念与用法详解
  • 【Clickhouse系列】增删改查:对比mysql
  • Clickhouse官方文档学习笔记
  • FastAPI 入门教程 #06:FastAPI 请求体和数据模型
  • 从零理解鱼眼相机的标定与矫正(含 OpenCV 代码与原理讲解)
  • PostgreSQL全栈部署指南:从零构建企业级高可用数据库集群
  • React Next快速搭建前后端全栈项目并部署至Vercel
  • 《DeepSeek原生应用与智能体开发实践》案例重现
  • 关于数学函数和数据类型扩展的详细讲解(从属GESP二级)
  • 30天pytorch从入门到熟练(day1)
  • Mybatis-Plus支持多种数据库
  • 【机器学习四大核心任务类型详解】分类、回归、聚类、降维智能决策指南
  • 多项目预算如何集中管控与动态调整
  • 将Linux装进口袋: Ubuntu to Go 制作
  • 【Linux】进程间多种通信方式对比
  • Typescript基础
  • 【后端】负载均衡
  • MiniMax-M1 开源,Kimi 深度研究内测,GPT-5 今夏发布,Gemini 2.5 稳定上线!| AI Weekly 6.16-22
  • 大模型MetaGPT面试题汇总及参考答案
  • Python-break、continue与else语句
  • OJ搭建:Judge0服务器、DeepSeek服务接入简介
  • 70、爬楼梯