您是否厌倦了为了控制 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<3' 'rich'
这会将元数据添加到脚本文件中:
# /// script # dependencies = [ # "requests<3", # "rich", # ] # ///
就是这样!您可以与其他人共享此文件,他们只需运行:
$ uv run app.py
瞧——无需外部设置!这一切都归功于 uv 的速度和效率。
默认情况下,uv 要求在虚拟环境中安装软件包,以保持系统干净并避免不同项目之间的冲突。使用 uv 创建虚拟环境很简单:
$ uv venv
这将创建一个包含隔离环境的 .venv 目录。如果你想指定自定义目录或Python版本,你可以这样做:
$ uv venv my_env --python 3.9
环境已准备好使用,uv 会自动检测您的所有命令,例如安装包或运行脚本。
使用 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 provides a pip-like experience but with turbocharged performance. Installing packages is straightforward:
$ uv pip install flask
Need to add optional dependencies or install directly from a GitHub repo? No sweat:
$ uv pip install 'torch>=1.10.0' "git+https://github.com/astral-sh/ruff"
No more waiting around for slow installations—uv gets the job done fast and effectively.
Whether you're linting code or formatting files, uv makes installing CLI tools easy:
Globally:
$ uv tool install ruff
Locally within a Project:
$ uv add ruff
Run Ephemeral Commands without Installing Globally:
$ uvx black my_code.py
Say goodbye to package conflicts and environment pollution—just run your tools whenever and wherever you need them.
If you're looking to supercharge your Python development and want to stop wrestling with multiple tools, uv is your answer. With its streamlined commands, reproducible environments, and efficient package management, uv makes Python development a pleasure rather than a chore.
Ready to take uv for a spin? ? Start today and experience a better way to manage your Python projects.
Stay tuned for Part 2, where we'll dive deeper into advanced features like leveraging pyproject.toml, handling global vs. local tool installations, and how uv can be your best friend when managing complex environments.
Happy coding! ?✨
For more details and full documentation, check out uv documentation.
以上是使用 uv 掌握 Python 项目管理 PartIts Time to Ditch Poetry的详细内容。更多信息请关注PHP中文网其他相关文章!