用 uv 管理 Python 项目:一个工具打通从建项目到运行的全流程
Python 开发中,环境与依赖管理常常分散在多个工具里。uv 由 Astral 出品,用 Rust 编写,定位为 Python 的包与项目管理工具,希望用一个工具覆盖以往需要多个工具完成的工作。
从零开始一个项目,可以先用 uv init 新建项目,并用 pyproject.toml 声明依赖。随后用 uv add 添加依赖,依赖信息会写入项目声明,而 uv lock 则生成 uv.lock,记录精确的解析结果。两者分工很清楚:前者说明项目需要什么,后者记录这次实际解析出的具体版本组合。
日常运行同样可以直接交给 uv:uv run 可以运行脚本或项目,uv sync 则按锁文件同步环境,让当前环境与锁文件保持一致。需要固定解析结果时,先用 uv lock 生成锁文件,再用 uv sync 同步,步骤清晰,也不容易遗漏。
Python 版本管理也是 uv 的一部分。uv python install 可以安装和管理 Python 版本,不必先为版本切换再找别的工具。对已经熟悉 pip 工作方式的人,uv pip 提供与 pip 兼容的包管理接口,可以在熟悉的用法下完成包的安装与管理,降低迁移的学习成本。
除了管理自己的项目,uv 还适合运行别人发布的工具。uvx,也就是 uv tool run,可以直接运行已发布的工具,而不必先把它装进当前项目环境。这样做的好处是工具与项目依赖互不干扰,用完即走,项目环境保持干净。
安装门槛也值得一提:uv 提供独立安装脚本,不需要事先装好 Python 或 Rust。对刚接触 Python 的读者来说,先装好一个工具,再用它创建项目、管理依赖和安装 Python 版本,顺序自然,不用先准备一整套前置环境。
总结来看,uv 的价值在于把建项目、加依赖、锁版本、同步环境、运行项目、管 Python 版本和运行工具串成一条线:用 uv init 起步,用 uv add 扩展依赖,用 uv lock 与 uv sync 固定和还原环境,用 uv run 推进日常开发,遇到现成工具就用 uvx 调用。把这套流程用熟,Python 项目的日常管理会更整齐,也更容易讲清楚和复现。
- 点赞
- 收藏
- 关注作者
评论(0)