您是否厌倦了为了控制 Python 环境和依赖项而使用 pip、virtualenv、conda、poetry 和 pyenv 等多个工具?你并不孤单!管理 Python 项目可能会让人感到头疼,尤其是在需要处理各种不同的包管理器和工具的情况下。
输入 uv — 通用 Virtualenv。将其视为一站式包管理器,旨在简化和加速您的 Python 开发过程。
uv 从另一位现代打包管理器 Rye 中汲取灵感,统一了 pip、pip-tools、pyenv、virtualenv 和 Poetry 的最佳功能。 uv 使用 Rust 构建,不仅速度快,而且效率高,简化了从管理依赖项到创建虚拟环境的一切。
简而言之,uv 就是整合。当您可以获得一种统一的体验时,为什么要在多种工具之间切换?它旨在消除 Python 开发中的摩擦,为您提供更一致、更快速的项目管理方式。而且速度还很快!这为动态管理打开了新的大门
uv 最令人兴奋的功能之一是能够直接在 Python 脚本中添加依赖项。想象一下你有一个像这样的简单脚本:
# app.py import requests from rich.pretty import pprint response = requests.get("https://peps.python.org/api/peps.json") data = response.json() pprint([(k, v["title"]) for k, v in data.items()][:10])
运行此脚本通常意味着设置虚拟环境并手动安装依赖项。使用 uv,您可以将所有依赖项直接嵌入到脚本中,使其成为自包含和可共享:
$ uv add --script app.py 'requests自动元数据生成
这会将元数据添加到脚本文件中:
# /// script # dependencies = [ # "requests就是这样!您可以与其他人共享此文件,他们只需运行:
$ uv run app.py瞧——无需外部设置!这一切都归功于 uv 的速度和效率。
2. 创建和管理虚拟环境
虚拟环境入门
默认情况下,uv 要求在虚拟环境中安装软件包,以保持系统干净并避免不同项目之间的冲突。用uv创建虚拟环境很简单:
$ uv venv这将创建一个包含隔离环境的 .venv 目录。如果你想指定自定义目录或Python版本,你可以这样做:
$ uv venv my_env --python 3.9环境已准备好使用,uv 将自动检测您的所有命令,例如安装包或运行脚本。
何时使用 uv add 与 uv pip install
使用 uv add:当你想向项目的 pyproject.toml 文件添加依赖项时。当您正在开发项目并希望跟踪所有依赖项以使项目易于共享和复制时,这是最好的选择。我们将在下一篇文章中对此进行介绍,敬请期待!
$ uv add fastapi
这将更新您的 pyproject.toml 并将版本锁定在 uv.lock 中。
使用 uv pip install:当您想要安装包以快速使用而不修改项目文件时,或者对于不需要在 pyproject.toml 中跟踪它们的全局工具时。将 uv pip 视为一种直接的一次性安装。
$ uv pip install requests
选择正确的命令可确保您的项目得到正确管理并易于共享或部署。
我们都经历过这样的情况——您的代码今天可以运行,但明天就会因为包更新而崩溃。使用 uv,您可以通过锁定软件包版本来防止这种情况,以确保一致性和可重复性:
[tool.uv] exclude-newer = "2023-10-16T00:00:00Z"
这样,即使出现新版本的依赖项,您的项目也保持稳定。非常适合无法承受意外的长期项目!
许多开发人员必须处理需要不同 Python 版本的多个项目。 uv 让切换版本变得如此简单:
$ uv python install 3.8 3.9 3.10
安装版本后,它们之间的切换是无缝的:
$ uv run --python 3.10 app.py
如果您想锁定项目的特定版本:
$ uv python pin 3.9
不再需要杂耍 pyenv 命令——uv 会为您处理所有繁重的工作。
uv 提供类似 pip 的体验,但具有涡轮增压的性能。安装软件包很简单:
$ uv pip install flask
需要添加可选依赖项或直接从 GitHub 存储库安装?不费吹灰之力:
$ uv pip install 'torch>=1.10.0' "git https://github.com/astral-sh/ruff"
不再需要等待缓慢的安装 - uv 可以快速有效地完成工作。
无论您是要检查代码还是格式化文件,uv 都可以让安装 CLI 工具变得简单:
全球:
$ uv tool install ruff
项目内本地:
$ uv add ruff
运行临时命令而不全局安装:
$ uvx black my_code.py
告别包冲突和环境污染——随时随地运行您的工具。
如果您希望增强您的 Python 开发能力并希望停止使用多种工具,uv 就是您的答案。凭借其简化的命令、可重现的环境和高效的包管理,uv 使 Python 开发成为一种乐趣而不是一件苦差事。
准备好尝试一下紫外线了吗? ?从今天开始,体验管理 Python 项目的更好方法。
请继续关注第 2 部分,我们将深入探讨高级功能,例如利用 pyproject.toml、处理全局与本地工具安装,以及 uv 如何成为管理复杂环境时最好的朋友。
编码愉快! ?✨
有关更多详细信息和完整文档,请查看 uv 文档。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3