uv 一把梭指南

X1a0t,2 min read

最近心血来潮,尝试了一下 python 解释器版本和包管理工具标准化方案。使用的是 uv,理由是名字够短,并且有集百家之长的趋势。

概念

uv 的概念比较清晰,全局管理 python 解释器,每个版本的解释器都只安装一次,项目级管理依赖,在项目内会把解释器软链到全局的对应版本 python 解释器(.venv/bin/python),把依赖维护到 .venv/lib

以往 Python 依赖默认安装到全局环境(site-packages),多个项目共享依赖,非常容易导致版本冲突,导致不得不新建一个虚拟环境(带解释器)。而 uv 实在是神清气爽,和其他语言的心智模型也都殊途同归: 全局管理工具链,项目级管理依赖。除了 python 有需要更频繁切版本的问题。

使用

对于新项目,直接用 uv init, uv add, uv sync 初始化和管理依赖就可以了。对于存量项目,我尝试了一下 migrate-to-uv,这个工具可以把其他类型的包管理器迁移到 uv。用法很简单,在项目根目录执行 uvx migrate-to-uv 就可以。目前这个工具支持迁移 Poetry, Pipenv, pip-tools, pip,迁移之后 uv sync 就可以了。

切解释器版本也很简单,修改 .python-version 里的版本,然后 uv sync

CC BY-NC 4.0 2025 © Powered by Nextra.