KDnuggets

I Replaced Pip, Virtualenv, and Poetry With uv: Here’s Why

8.5内容质量

TL;DR · AI 摘要

uv工具通过整合Python包管理、虚拟环境和锁文件功能,实现比pip快10-100倍的项目初始化速度,成为替代pip/Poetry的新选择。

核心要点

  • uv比pip快10-100倍,支持Python版本管理和锁文件生成
  • uv整合了pip、virtualenv、Poetry等工具的常用功能
  • Astral团队开发的uv已支持项目管理、依赖安装和命令运行

结构提纲

按章节快速跳转。

  1. 作者描述使用pip、virtualenv和Poetry时遇到的碎片化工作流问题。

  2. ·uv工具简介

    uv由Astral团队开发,整合了Python包管理和项目管理功能。

  3. uv的安装速度比pip快10-100倍,且提供pip兼容接口。

  4. 作者展示使用pip和Poetry时的典型命令和流程痛点。

  5. uv可替代pip、pip-tools、Poetry等7类工具的常见用途。

思维导图

用一张图看清主题之间的关系。

查看大纲文本(无障碍 / 无 JS 友好)
  • uv工具解析
    • 核心功能
      • 包管理
      • 虚拟环境
      • 锁文件
    • 性能优势
      • 10-100倍加速
      • pip兼容接口
    • 替代工具
      • pip
      • Poetry
      • virtualenv

金句 / Highlights

值得收藏与分享的关键句。

#Python#工具#开发效率#包管理
打开原文

我用 uv 替换了 Pip、Virtualenv 和 Poetry:原因如下 - KDnuggets

publ: 2026年8月4日

  • 博客热门文章
  • 主题 人工智能 职业建议 计算机视觉 数据工程 数据科学 语言模型 机器学习 MLOps NLP 编程 Python SQL
  • 数据集
  • 活动
  • 资源 快速参考指南 推荐 技术简报
  • 广告

订阅简报

#header end

/ad_wrapper

我用 uv 替换了 Pip、Virtualenv 和 Poetry:原因如下

uv 通过提供一个快速的工具来安装包、管理虚拟环境、生成锁文件、处理 Python 版本以及运行项目命令,让我的工作变得更轻松。

作者:Abid Ali Awan,KDnuggets 副主编,2026年8月4日发布于 Python

<div class="addthis_native_toolbox"></div>

# Python 的混乱局面

Python 的打包管理一直让我觉得有些混乱。对于一个项目,我可能会忘记创建虚拟环境,直接用 pip 全局安装包。对于另一个项目,我可能会创建 venv,但忘记激活它,结果又不小心全局安装了包。

对于更大的项目,我会改用 Poetry 来管理依赖项、打包和锁文件。它确实是一个强大的工具,但与 pip 相比,处理我常做的项目时经常显得缓慢且笨重。

这些工具本身并没有不好,它们的流行有其合理之处。pip 是 Python 的默认包安装工具,venv 帮助创建隔离环境,Poetry 提供依赖管理与可复现的锁文件。

但使用 uv 后,我开始问自己一个简单的问题:

为什么在只需要一个工具就能完成大部分工作时,我还要使用三个不同的工具?

# uv 是什么?

uv 是由 Astral 团队(Ruff 的开发团队)打造的快速 Python 包和项目管理工具。

最简单理解 uv 的方式是:无需使用不同工具分别处理包安装、虚拟环境、锁文件和 Python 版本管理,uv 将这些工作流程整合到一个统一的界面中。

它可以在许多常见 Python 工作流中替代 pip、pip-tools、pipx、Poetry、pyenv、twine 和 virtualenv 等工具。

与传统方案相比,uv 的速度提升显著。根据 Astral 的基准测试,uv 的速度比 pip 快 10-100 倍,支持项目管理、生成锁文件、管理 Python 版本,同时仍提供与 pip 兼容的熟悉接口。

这听起来是一个巨大的改进,但日常使用中最大的好处其实很简单:

uv 让 Python 项目初始化更快、更整洁、更少麻烦。

# 我之前的 Python 工作流程

在使用 uv 之前,我的 Python 工作流程通常如下。

首先,我会创建一个虚拟环境:

code
python -m venv .venv
source .venv/bin/activate

在 Windows 上,我会用以下命令激活:

code
.venv\Scripts\Activate.ps1

然后安装所需包:

code
pip install pandas scikit-learn streamlit
pip freeze > requirements.txt

对于更大的项目,我通常会改用 Poetry:

code
poetry init
poetry add pandas scikit-learn streamlit
poetry run python main.py

这种方式虽然可行,但总感觉需要在不同工具和不同工作流程之间来回切换。

有时我会有 requirements.txt 文件,有时会有 pyproject.toml 文件,有时会有锁文件。有时我忘记激活虚拟环境,结果不小心全局安装了包。

这并非无法管理,但也不够整洁。我希望找到一种工作流程,无论是在小型脚本、数据科学项目还是大型Python应用中,都能感觉更快、更简单、更一致。

# 我的新工作流程:uv

使用uv后,启动新Python项目变得简单得多。

我只需几个命令即可创建项目、添加依赖并运行代码:

code
uv init my-project
cd my-project
uv add pandas scikit-learn streamlit
uv run main.py

仅此而已。

运行这些命令时,uv会为我处理大部分设置工作。它会创建项目结构、在pyproject.toml中管理依赖、生成.venv环境,并创建uv.lock文件以实现可重复安装。

因此我不需要手动创建虚拟环境、激活它、安装包或冻结依赖,可以让uv全程管理整个工作流。

最棒的是,我不必每次都要激活环境。

不再需要这样操作:

code
source .venv/bin/activate
python script.py

我只需运行:

code
uv run script.py

uv run会检查环境是否与锁文件保持同步,然后使用正确的依赖运行命令。

对我而言,这是最大的生活品质提升。我花更少时间思考环境问题,而将更多时间用于实际构建项目。

# 我为什么喜欢uv

我喜欢uv的主要原因在于,它消除了日常Python开发中的许多小烦恼。

#### // 将Python工作流程整合到一个工具中

这是我切换工具的最重要原因。

在使用uv之前,我的工作流程分散在不同工具之间。我用pip安装包,用venv或virtualenv创建环境,用pip freeze生成requirements.txt文件,用Poetry处理大型项目,有时还会用pyenv管理Python版本。

每个工具都解决不同问题,但整体工作流程却显得零散。

使用uv后,这些操作大多可以在一个地方完成:

code
uv init
uv add requests
uv add --dev pytest
uv run pytest

这创造了更整洁的工作流程。我可以创建项目、添加依赖、管理环境、生成锁文件并运行命令,而无需频繁切换工具。

这才是真正的价值所在。uv不仅仅是更快的pip,它为我提供了一种管理Python项目的统一方式。

#### // 速度更快

速度并非一切,但在重复创建项目时确实重要。

用pip安装依赖可能感觉很慢,尤其是在全新环境或CI流水线中。uv用Rust编写并专为速度设计,在我的实际工作中,这种差异非常明显。

使用uv时,项目设置速度明显提升,特别是对于需要安装transformers、torch、scikit-learn或其他数据科学和机器学习包的项目。

另一个我喜欢的点是,我不必过多思考依赖解析问题。uv会处理环境、解析依赖、更新锁文件并自动保持同步。

在日常工作中,这意味着更少的等待时间、更少的设置问题,以及更多实际构建项目的时间。

#### // 让项目设置更整洁

使用uv后,项目流程感觉更现代化:

code
uv init
uv add fastapi
uv add --dev pytest
uv run pytest

这将依赖项保留在pyproject.toml中,创建锁文件,并使项目更容易在另一台机器上复现。

我不需要告诉别人:

"创建虚拟环境,激活它,安装依赖项,并确保Python版本正确。"

你通常可以直接这样说:

code
uv sync
uv run main.py

这样会更简洁。

#### // 简化迁移过程

我喜欢uv的另一个原因是我不需要一次性改变所有东西。

如果我有一个仍在使用requirements.txt文件的旧项目,我可以使用uv而无需将整个项目转换为完整的uv工作流程。

例如:

code
uv venv
source .venv/bin/activate
uv pip install -r requirements.txt

在Windows上,我可以使用以下命令激活环境:

然后安装依赖项:

code
uv pip install -r requirements.txt

这很有用,因为迁移不需要非此即彼。我可以先在现有项目中使用uv作为更快的安装工具,然后在新项目中使用uv init、uv add和uv sync。

这让uv能够逐步采用,而不是在第一天就强制进行完整的流程更改。

#### // 管理Python版本

另一个不错的功能是uv也可以安装和管理Python版本。这意味着它还可以替代许多人pyenv工作流程中的部分功能。

例如,我可以安装特定的Python版本:

code
uv python install 3.12

然后将当前项目固定使用该版本:

code
uv python pin 3.12

之后,我可以像往常一样创建或同步环境:

code
uv sync

因此,我不需要单独管理Python版本、虚拟环境和依赖项,而是可以将更多工作流程保留在一个工具中。

# 安装uv

安装uv非常简单。打开终端或PowerShell,运行适用于你操作系统的命令。

对于macOS和Linux:

code
curl -LsSf https://astral.sh/uv/install.sh | sh

对于Windows PowerShell:

code
irm https://astral.sh/uv/install.ps1 | iex

这是使用官方独立安装程序安装uv的最简单方法。

你也可以通过pip、Homebrew、WinGet、Scoop、Docker、Cargo和其他方法安装uv。但对大多数用户来说,独立安装程序是最简单的选择。

# 是否应该切换到uv?

对于新的Python项目,我认为uv是一个容易推荐的选择。

它速度快、现代,并将项目设置、依赖管理、虚拟环境、锁定文件、Python版本和工具执行整合到一个工作流程中。文档还提到uv提供了与pip兼容的熟悉接口,因此你可以从uv pip开始,然后再完全转向uv init、uv add和uv sync。

话虽如此,我不会告诉每个人立即切换。对于数据科学初学者来说,conda仍然是一个不错的起点,因为它在数据科学工作流程中广泛用于管理环境和包。

对于使用AI编码工具的vibe开发者来说,pip、venv和requirements.txt仍然值得学习,因为许多AI模型是基于旧的Python工作流程训练的,生成的指令可能无法与uv顺畅配合。

但对于Python开发者、产品工程师以及经常设置项目的人员,我强烈建议尝试uv。它为你提供更清晰的工作流程,还包含uvx,它的工作方式类似于Python工具的npx。你可以在隔离的临时环境中运行基于Python的命令行界面(CLI)工具,而无需全局安装它们。

因此,我的建议很简单:如果你刚开始数据科学,保留conda;学习pip因为它仍然无处不在;但在新Python项目中,如果你想获得更快更清晰的开发体验,请使用uv。

Abid Ali Awan(@1abidaliawan)是一位获得认证的数据科学家,热爱构建机器学习模型。目前,他专注于内容创作和撰写关于机器学习与数据科学技术的技术博客。Abid拥有技术管理硕士学位和电信工程学士学位。他的愿景是为有心理疾病困扰的学生构建一个基于图神经网络的AI产品。

关于该主题的更多内容

  • 使用Poetry与Conda & Pip管理Python依赖项
  • Pip Install YOU:初学者创建Python库指南
  • 为什么WebMCP令人兴奋
  • 我们对DuckDB、SQLite和Pandas在100万行数据上的基准测试:结果如何
  • 你的RAG管道可能毫无用处。这里有更好的替代方案
  • 关于智能体AI,大家普遍误解的几点

<hr class="grey-line"><br> <div><h3>我们推荐的5门免费课程</h3><br> </div>

WordPress的Mailchimp插件v4.13.1 - https://wordpress.org/plugins/mailchimp-for-wp/

/ WordPress的Mailchimp插件

你可以从这里开始编辑。

如果评论已关闭。

<= 上一篇

下一篇 =>

#content end

<script type="text/javascript">kda_sid_write(kda_sid_n);</script>

最新文章

  • 诚实评测Abacus AI:ChatLLM、DeepAgent、AI Studio等 | 我用uv替代了Pip、Virtualenv和Poetry:原因如下 | 7种减少LLM工作流程中推理延迟的方法 | MiniMax Agent真的让工作更轻松吗? | 多智能体AI节省令牌使用指南 | KDnuggets每周精选:构建并部署你的第一个自主智能体 • 7个仍有价值的机器学习算法...

热门文章

  • 5本加深对大型语言模型理解的书籍
  • 7个仍然重要的机器学习算法
  • 7个CLI智能体编码的最佳Claude代码替代方案
  • 使用Claude Design的初学者指南
  • Kaggle + Google的免费5天智能体AI课程
  • 2026年你应该尝试的5个最佳AI数据分析工具
  • 构建并部署你的第一个自主智能体的7个步骤
  • SQL vs Pandas vs AI智能体:哪个最适合解决分析问题?
  • 每个工程师必须了解的智能体AI背后的5个关键概念
  • MiniMax Agent真的让工作更轻松吗?

#content_wrapper end

© 2026

Guiding Tech Media

|

关于

联系我们

广告合作

隐私政策

服务条款

2026年8月4日发布

blank

不,谢谢!

/.main_wrapper

<script defer type="text/javascript" src="https://s7.addthis.com/js/300/addthis_widget.js#pubid=gpsaddthis"></script>

noptimize

/noptimize