在 Python 项目的开发过程中,管理多个虚拟环境以及依赖是至关重要的。uv 是一个轻量级的 Python 包管理工具,类似于 Poetry 和 Pipenv,旨在简化 Python 项目的依赖管理和虚拟环境的使用。

通过 uv,你可以轻松地创建、管理和切换虚拟环境,而不需要手动去配置和安装 Python 环境。它简化了开发人员在多项目、多环境下的工作流程。

1. 安装 uv

首先,你需要安装 uv。你可以通过以下命令使用 pip 安装:

pip install uv

安装完成后,你可以使用以下命令确认 uv 是否安装成功:

uv --version

2. 创建一个新的虚拟环境

使用 uv 来创建虚拟环境非常简单。只需运行:

uv new <project_name>

例如,创建一个名为 my_project 的新项目:

uv new my_project

这个命令会执行以下操作:

  • 创建一个名为 my_project 的文件夹。
  • 在该文件夹内创建一个虚拟环境,自动安装 Python 和 pip。
  • 自动创建 requirements.txt 文件来管理项目的依赖。

你可以进入项目文件夹并查看它的结构:

cd my_project

目录结构会如下所示:

my_project/
├── venv/            # 虚拟环境目录
├── requirements.txt # 依赖文件
└── <project_files>  # 你的项目代码

3. 激活虚拟环境

要使用虚拟环境,需要先激活它。激活虚拟环境非常简单:

在 Linux / macOS 系统上:

source venv/bin/activate

在 Windows 系统上:

venv\Scripts\activate

激活后,你会看到命令行提示符前有 (venv),表示你已经进入了虚拟环境。

4. 安装依赖

在虚拟环境中,你可以安装项目所需的依赖。例如,安装 requests 库:

pip install requests

安装完依赖后,uv 会自动将它们记录到 requirements.txt 文件中。你可以查看文件的内容:

cat requirements.txt

输出可能如下:

requests==2.25.1

如果你需要添加多个依赖,可以一行一行地安装,或者通过命令行批量安装:

pip install numpy pandas

5. 管理依赖

你可以使用 uv 来帮助管理项目的依赖。

查看当前安装的依赖:

uv list

更新依赖:

uv update

这会检查你的 requirements.txt 文件,并确保安装的所有库都与文件中的内容一致。

导出依赖:

如果你想将当前环境中的所有依赖导出到 requirements.txt 文件中,可以使用以下命令:

uv freeze > requirements.txt

6. 切换虚拟环境

如果你有多个 Python 项目,每个项目都有不同的虚拟环境,可以通过 uv 快速切换不同的虚拟环境。

uv use <project_name>

这会自动切换到指定项目的虚拟环境。例如,切换到 my_project 的虚拟环境:

uv use my_project

7. 使用 uv 执行 Python 脚本

你可以直接使用 uv run 来在虚拟环境中运行 Python 脚本。例如:

uv run my_script.py

这个命令会确保脚本在虚拟环境中运行,而不会影响全局的 Python 环境。

8. 删除虚拟环境

当你不再需要某个虚拟环境时,可以使用 uv 删除它:

uv delete <project_name>

例如,删除 my_project 的虚拟环境:

uv delete my_project

9. 结合 uv 与 git 使用

在多人协作或版本控制中,通常需要将虚拟环境相关的文件与代码一起管理。你可以将虚拟环境文件(如 requirements.txt)提交到 Git 仓库,并通过 Git 共享代码和依赖。

  1. 初始化 Git 仓库:
git init
  1. 将文件提交到 Git 仓库:
git add .
git commit -m "Initial commit with virtual environment"
  1. 如果需要将虚拟环境的某些文件排除在版本控制外,通常会在项目根目录中创建 .gitignore 文件,忽略 venv/ 目录:
venv/

10. 总结

uv 是一个简单而强大的工具,可以帮助你管理 Python 项目的虚拟环境和依赖。它的主要优点是自动化创建虚拟环境、管理依赖以及简化开发流程。通过 uv,你可以轻松地管理多个项目的依赖和环境,并在开发过程中保持环境的隔离性。

常见 uv 命令总结

  • uv new <project_name>:创建新的虚拟环境和项目。
  • uv use <project_name>:切换到指定项目的虚拟环境。
  • uv list:列出所有安装的依赖。
  • uv update:更新项目依赖。
  • uv freeze > requirements.txt:导出依赖到 requirements.txt 文件。
  • uv run <script.py>:在虚拟环境中运行 Python 脚本。
  • uv delete <project_name>:删除指定项目的虚拟环境。

通过使用 uv 管理虚拟环境和依赖,你可以保持项目的整洁和可维护性,从而提升开发效率。