跳过正文
Background Image
  1. Posts/

还在用 pip 和 venv?那你可真落伍了,赶紧体验 uv!

·1077 字·3 分钟· ·
沈显鹏
作者
沈显鹏
目录

如果你已经习惯了 pip install、手动创建虚拟环境、自己管理 requirements.txt,那你可能会对 uv 有些惊喜。

这是一个由 Astral 团队开发、用 Rust 写的 Python 包管理工具,它不仅能替代 pip、venv、pip-tools 的功能,还带来了更快的依赖解析速度,以及一套更现代的项目管理方式。

uv init 开始,一键创建项目骨架
#

我们不从 “怎么装 uv” 讲起,而是从 “怎么用 uv 创建一个项目” 开始。

uv init

运行这条命令后,uv 会帮你:

  • 创建 .venv 虚拟环境;
  • 初始化 pyproject.toml 配置文件;
  • (可选)添加依赖;
  • 生成 uv.lock 锁定文件;
  • .venv 设置为当前目录默认环境(无需手动激活);

整个过程只需一个命令,就能完成以往多个步骤,是构建 Python 项目的更优起点。

使用 uv add 安装依赖(而不是 pip install)
#

传统的写法是:

pip install requests

但在 uv 的世界里,添加依赖是这样的:

uv add requests

这样做的好处是:

  • 自动写入 pyproject.toml[project.dependencies]
  • 自动安装到 .venv 中;
  • 自动更新 uv.lock 锁定文件;
  • 无需再维护 requirements.txt

如果你想添加开发依赖(比如测试或格式化工具),可以:

uv add --dev pytest ruff

想移除依赖?

uv remove requests

运行项目脚本或工具:uv venv + uvx
#

uv 的虚拟环境默认安装在 .venv 中,但你不需要每次 source activate,只需执行:

uv venv

这会确保 .venv 存在并自动配置成当前 shell 的默认 Python 环境。之后你运行脚本或工具时,不用担心路径问题。

更妙的是,uv 提供了一个 uvx 命令,跟 pipx 以及 Node.js 的 npx 类似,可以直接运行安装在项目里的 CLI 工具。

比如我们用 ruff 来检查或格式化 Python 代码:

uvx ruff check .
uvx ruff format .

现在用 uvx,你不需要再装一堆全局工具,也不用再通过 pre-commit 来统一调用命令——项目内直接用,跨平台还省心。

项目结构示例
#

经过 uv init 和一些 uv add 之后,一个干净的 Python 项目结构可能是这样的:

my-project/
├── .venv/               ← 虚拟环境
├── pyproject.toml       ← 项目配置(依赖、元数据等)
├── uv.lock              ← 锁定的依赖版本
├── main.py              ← 项目入口脚本

使用体验如何?
#

我最近已经把 uv 作为新项目的默认工具:

  • 不再手动写 requirements.txt
  • 不再纠结 poetry.lockpyproject.toml 的混用
  • 依赖安装速度非常快,第一次装大型项目时速度能快 3~5 倍
  • 搭配 ruff 作为 Lint + Format 工具,完全不需要再装 black、flake8

在 CI 中,我也逐步用它替代 pip install -r requirements.txt,用锁定文件构建环境,一致性更强。

总结
#

如果你:

  • pip install 安装慢感到不满;
  • 不想再写一堆 requirements 文件;
  • 想要更现代、更快、更自动化的 Python 项目结构;

那你应该试试 uv。它是更快、更更现代的包管理器工具集。

从下个项目开始,不妨从 uv init 开始吧。

项目地址:https://docs.astral.sh/uv/


转载本站文章请注明作者和出处,请勿用于任何商业用途。欢迎关注公众号「DevOps攻城狮」

相关文章

全程记录|PyCon LT 2025 第三天:AI 能取代你吗?
·1468 字·3 分钟
今天是 PyCon LT 2025 的最后一天,主题是 AI and ML Day。分享了几位女性讲者的精彩演讲,以及对数据科学和 AI 的新认识。
CPython 停止更新 Copyright 了,为什么?
·1928 字·4 分钟
CPython 停止更新 Copyright 的原因和过程。了解 Python 项目法律团队的建议,以及如何处理开源项目中的版权声明。
全程记录|PyCon LT 2025 第二天:被几位女性开发者圈粉了
·1570 字·4 分钟
今天是 PyCon LT 2025 的 Data Day,主题是 Dataframes、Databases、Orchestration。虽然不太熟悉这些领域,但几位女性讲者的演讲让我印象深刻,收获颇丰。
全程记录|PyCon LT 2025 第一天:我在异国 Python 大会上的见闻
·1826 字·4 分钟
参加了 PyCon LT 2025 的第一天,分享了演讲内容、个人感受以及对 Python 社区的思考。
回国休假的一点感慨:北京的夜,好晚
·867 字·2 分钟
在北京停留的一晚,和同学小聚,感受到北京人下班的晚节奏,以及生活在大城市的压力和挑战。
微软、NASA 都在用?我用业余时间维护了 4 年的项目破百了
·594 字·2 分钟
cpp-linter-action 是一个 GitHub Action,提供 C/C++ 代码的格式化和静态分析功能。它使用 clang-format 和 clang-tidy,支持多种配置和自定义规则。项目自 2021 年创建以来,已被多个知名组织和开源项目使用。