你是否对使用 pip
, virtualenv
, conda
, poetry
和 pyenv
等工具来管理你的 Python 环境和依赖感到厌烦?你不是一个人!管理 Python 项目会让人头疼,尤其是当你需要搞定这些不同的包管理器和工具时。
输入 uv
命令 — 全能虚拟环境。可以把它看作是一个一站式解决方案,旨在简化并加速你的Python开发过程。
,
一个小小背景故事uv
的灵感来源于 Rye,另一个现代的包管理器,它结合了 pip
、pip-tools
、pyenv
、virtualenv
和 poetry
的最佳特性。由 Rust 编写,uv
不仅快速,而且高效,无论是管理依赖还是创建虚拟环境,都能变得简单。
uv
的目标
简而言之,uv
关乎统一。为什么要在多个工具间切换,而不能有一个统一的体验呢?它旨在消除 Python 开发中的摩擦点,为你提供更一致且更快的项目管理方式。而且它非常快速!这开启了许多新的可能性,比如动态管理
—
1: 便携代码带内联脚本元信息我们来聊聊依赖项吧
uv
有一个非常酷的功能,就是在你的 Python 脚本中直接添加依赖项。假设你有一个简单的脚本如下:
# app.py
# 下面的代码是用来获取并打印PEP标题的前10条
import requests # 导入requests库
from rich.pretty import pprint # 导入美化打印功能,并命名为pretty_print
response = requests.get("https://peps.python.org/api/peps.json") # 获取PEP数据,响应存储在response
# 响应中的数据转换为json格式
data = response.json()
# 美化打印出PEP标题的前10条,用[:10]表示只显示前10条
pprint([(k, v["title"]) for k, v in data.items()][:10])
运行此脚本通常意味着设置虚拟环境并手动安装依赖项。使用 uv
,您可以将所有依赖项直接嵌入到脚本中,这样使它独立且可分享:
在终端中输入以下命令来添加依赖:
uv add --script app.py 'requests<3' 'rich'
此命令将特定依赖项添加到 app.py
脚本中。'requests<3'
表示 requests 版本需要小于 3,而 'rich'
是另一个依赖项。
自动元数据添加
这会给脚本文件添加元数据:
# /// 脚本
# 依赖库如下:
# "requests<3",
# "rich",
# ///
就这样搞定啦!你可以把这份文件分享给其他人,他们只要运行一下:
uv run app.py
# 运行app.py
就这样——完全不需要任何外部设置!都归功于uv
的快速和高效。
——
2, 创建和管理虚拟环境开始使用虚拟环境
默认情况下,uv
需要将包安装在虚拟环境中,以保持系统干净整洁并避免不同项目间的冲突。使用 uv
创建一个虚拟环境超级简单:
uv venv
这将会创建一个名为 .venv
的目录,其中包含隔离的环境。如果你想指定自定义目录或特定的 Python 版本,你可以这样做。
使用 Python 3.9 创建名为 my_env 的虚拟环境
环境已经准备好了,可以使用了,uv
会自动检测环境,适用于您所有的操作,比如安装包或运行脚本。
何时使用 uv add
和 uv pip install
- 使用
uv add
:当你想要向你的项目的pyproject.toml
文件添加依赖项时。这在你开发项目并希望跟踪所有依赖项时最为有用,这样可以轻松分享和复现,而不需要依赖项的细节。我们将在接下来的文章中详细讨论,敬请期待!
uv 安装 FastAPI
这会更新你的 pyproject.toml
并将版本锁定在 uv.lock
。
- 使用
uv pip install
:当你想要快速安装包而无需修改项目文件时,或对于不需要在pyproject.toml
中跟踪的全局命令。可以将uv pip
视为立即的一次性安装命令。
uv pip install requests
运行此命令来安装requests库.
选对命令,确保项目管理得当,方便分享和部署。
……
3. 为保证可重复性锁定版本:你的代码因更新而失效过吗?
比如说,大家可能都有过类似的经历,今天的代码运行正常,明天某个包更新后代码就出问题了。使用 uv
,你可以通过锁定依赖包的版本来确保一致性和可重现性:
[tool.uv]
exclude-newer = "2023–10–16T00:00:00Z" # 排除更新日期为2023年10月16日00:00:00Z之后的文件
这样一来,即使你的依赖项更新了版本,你的项目依然保持稳定。非常适合长期项目,特别是在那些你可承受不起任何意外的情况!
——
4. 管理 Python 版本不同的项目,不同的Python版本?没有问题!
许多开发者需要在不同Python版本的项目之间切换,这常常让人头疼。uv
让切换Python版本变得轻松简单。
使用uv命令安装Python 3.8, 3.9和3.10版本。
一旦安装完成,切换版本会无缝。
运行以下命令:uv run python 3.10 app.py
如果你想为某个项目锁定特定版本,可以这样做:
更新 Python 到 3.9 版
不再需要使用 pyenv
命令来切换——uv
会帮你搞定所有繁重的事情。
——
5. 和pip
说再见,摆脱烦恼
它是 pip
— 但更快速、更好
就像 pip
一样,但性能大幅提升。安装包超级简单:
运行命令 `pip install flask`
需要添加可选依赖项或直接从 GitHub 仓库安装包吗?没问题:
uv pip install 'torch>=1.10.0' "git+https://github.com/astral-sh/ruff"
不用再为缓慢的安装浪费时间——uv
能快速高效地完成工作。
— -
6 轻松全局管理CLI工具从 black
到 ruff
,轻松获取工具
无论你要检查代码还是格式化文件,uv
让你轻松安装 CLI 工具:
- 全球来说,
uv tool install ruff
解释:此命令用于安装名为ruff的工具。
- 项目本地:
执行 uv 加入 ruff
- 运行那些不需要全局安装的一次性命令:
uvx black my_code.py
告别依赖冲突和生态污染——想用就用你所需的工具。
— -
如果你想让你的 Python 开发更上一层楼并希望摆脱多个工具的纠缠,uv
就是最好的选择。凭借其简洁的命令、可重复构建的环境和高效的包管理,uv
使 Python 开发变得轻松又愉快,不再是繁重的工作。
准备好了吗?让我们试试 uv
。🚀 从现在开始,体验更轻松地管理你的 Python 项目。
— -
敬请期待第二部分:深入探讨高级功能,包括如何使用 pyproject.toml
,处理全局和本地工具安装,以及在管理复杂环境时,uv
如何成为你的得力助手。
祝你编程愉快 Python✨
更多细节和完整文档页面,请参考uv
页面。可以看看。
共同学习,写下你的评论
评论加载中...
作者其他优质文章