网站搜索

新的 Python 包管理器


管理 Python 项目、运行脚本和工具、处理依赖项以及安装包——所有这些都可以使用 uv 工具完成。

uv 是一个快速的 Python 包和项目管理器,用 Rust 编写。它可以用来代替 pip、pip-tools、pipx、poetry、pyenv 和 virtualenv 工具。 uv 提供了一个用于管理 Python 项目的完整生态系统,允许您添加依赖项、管理工具、运行脚本等等。简而言之,从安装 Python 到构建 Python 应用程序,uv 使这个过程变得更快、更容易。 uv 的最佳功能之一是它与 pip 工具的兼容性。这意味着您只需在命令前面添加“uv”,之前的所有命令都将立即可用。 

在本教程中,我们将学习如何安装 uv 并探索其各种功能。我们将创建一个项目、添加依赖项、运行脚本、使用工具,并了解其 pip 接口。

安装紫外线

您可以在终端中运行以下命令来在 Linux 和 MacOS 中安装 uv。

$ curl -LsSf https://astral.sh/uv/install.sh | sh

对于 Windows,请尝试使用 Winget 工具。

$ winget install --id=astral-sh.uv  -e

它非常灵活,您可以使用 pip 界面安装它。 

$ pip install uv

安装完成后,在终端中运行“uv”命令检查是否正确安装。

$ uv

项目

我们现在将初始化名为“KDN”的 Python 项目。

$ uv init KDN

将目录更改为项目。 

$ cd /datasets/_deepnote_work/KDN

如您所见,该项目拥有所有必需的文件。

$ uv run hello.py

正如我们所看到的,它首先创建了虚拟环境文件夹,然后运行了Python文件。 

Creating virtual environment at: .venv
Hello from kdn!

我们将继续安装“pandas”并将其添加为项目的依赖项。 

$ uv add 'pandas==2.2.3'

脚本

现在,我们将学习如何使用 uv 更轻松地运行 Python 文件。首先,我们将使用必要的代码创建一个简单的 Web 脚本 Python 文件。

$ echo "import requests; from bs4 import BeautifulSoup; response = requests.get('https://www.kdnuggets.com/author/abidali-awan'); soup = BeautifulSoup(response.content, 'html.parser'); print('Webpage Title:', soup.title.string)" > webscrape.py

然后,我们将依赖项添加到 Web 脚本文件中。

$ uv add --script webscrape.py "requests" "beautifulsoup4"

这些依赖项将作为注释添加到文件中,并且只能由 uv 工具读取。

当您运行Python文件时,它会首先安装Python包,然后运行代码。 

$ uv run webscrape.py

输出 :

Installed 7 packages in 18ms
Webpage Title:   Abid Ali Awan - KDnuggets

如果您在项目之外工作并且只有几个 Python 文件需要运行,那么这非常有用。 

工具

我们可以使用“uv”命令安装和使用 CLI 工具。在我们的例子中,我们正在安装“huggingface_hub”工具,它允许我们从 Hugging Face 存储库中提取和推送文件。

$ uv tool install huggingface_hub

要查看所有已安装的工具,我们可以运行以下命令。  

$ uv tool list

我们已经安装了该工具,但如您所见,它有一个不同的名称“huggingface-cli”,用于运行该命令。

huggingface-hub v0.25.1
- huggingface-cli

要使用与包名称不同的名称运行工具,我们将使用“--from”标志并为其提供包名称和工具名称。然后,我们将使用 API 密钥登录 Hugging Face Hub。 

$ uv tool run --from huggingface-hub huggingface-cli login --token $HUGGINGFACEHUB_API_TOKEN

该工具有效。 

Your token has been saved to /root/.cache/huggingface/token
Login successful

点子接口

uv 与 pip 工具完全兼容,这意味着我们可以使用 uv 工具运行所有 pip 命令。您所要做的就是在脚本开头添加“uv”。 

我们将使用 pip 接口安装“controlflow”包。

$ uv pip install controlflow -q

然后,我们将使用“show”命令查看其描述。 

$ uv pip show controlflow
Name: controlflow
Version: 0.10.0
Location: /root/venv/lib/python3.9/site-packages
Requires: jinja2, langchain-anthropic, langchain-core, langchain-openai, markdownify, openai, prefect, pydantic-settings, textual, tiktoken, typer
Required-by:

最后,我们将使用 freeze 命令创建“requirements.txt”。

$ uv pip freeze >> requirements.txt

最后的想法

uv 适合初学者、组合项目和生产就绪项目。它变得越来越流行,许多编排工具用 uv 取代了 pip,并鼓励用户改用这个卓越的工具。

在我看来,在处理具有数百个依赖项的大型项目时,uv 比 pip 更好。不过,对于小型项目,我相信pip工具在速度和效率上还是更胜一筹。

在本教程中,我们了解了新的 Python 项目管理工具。我们还通过项目、脚本、工具和 Pip 界面等代码示例探索了它的功能。