使用 uv 进行 Python 项目设置:虚拟环境与包管理

Python中的虚拟环境

虚拟环境是独立的Python环境,拥有自己的site-packages。基本上,这意味着每个虚拟环境都有自己的一套依赖于第三方包的库,这些包通常是从PyPI安装的。

如果您在同一台机器上开发多个Python项目,虚拟环境会非常有帮助。此外,当您将Python代码分发给他人或在服务器上时,虚拟环境可以方便地重现与开发机器相同的环境。

今天,我们将学习

  • 有哪些工具可以创建独立的环境
  • 哪些工具可以帮助进行Python项目中的包管理

开始使用

什么是uv

在过去的几年中,Python 开发者使用 venvpip 来创建虚拟环境和管理包。然而,uv 是一个新工具,它结合了虚拟环境和包管理的最佳特性。它是一个现代化的工具,帮助您在 Python 项目中创建隔离的环境并管理包。它是用 Rust 编写的,由 Astral 维护。

安装 uv

安装 uv 非常简单。它甚至已经发布在 PyPI 上,因此您可以使用 pip 进行安装:

pip install uv

有关不同安装方法的更多信息,请查看官方文档

初始化项目

uv 提供了一个 init 命令,可以创建一个新的 Python 项目,并生成一个 pyproject.toml 文件,以及一个 .gitignore 文件、一个 README.md 文件和一个 hello.py 文件。

uv init my-test-project

管理 Python 版本

除了经典的 pipuv 还为您管理 Python 解释器的版本。

通过

uv python list

您可以获得系统上所有可用 Python 版本的列表。安装其他版本也同样简单

uv python install 3.10.0

管理依赖

uv 使用 pyproject.toml 文件来管理依赖。您可以通过以下命令添加依赖:

uv add requests

 

包名称与 PyPI 上的名称相同。

使用 uv lock,您可以创建一个包含所有依赖项及其版本的 Lockfile。该文件可用于在其他机器上安装完全相同的版本。

uv sync

uv sync 是一个从 pyproject.toml 文件安装所有依赖项的命令。它类似于 pip install -r requirements.txt

临时环境

uv 的一个杀手级特性是能够创建临时环境。这意味着您可以通过一个命令创建一个新环境并在其中运行 Python 脚本。

假设我们想要一个使用 requests 包的 Python 3.10 项目。我们可以通过以下方式创建一个新环境:

使用 pyenvpip,我们需要创建一个新的虚拟环境,激活它,并安装该包:

pyenv install 3.10
pyenv local 3.10
python -m venv .venv
source .venv/bin/activate
pip install requests
python hello.py

使用 uv,可以通过一个命令完成此操作:

uv run --python 3.10 --with requests python hello.py

结论

uv 是一个现代工具,结合了虚拟环境和包管理的最佳特性。它是管理您 Python 项目依赖关系的绝佳工具。试试看,告诉我您的想法!

更多