使用 uv 管理 Python 项目
uv
是一个高性能的 Python 包管理工具,旨在替代传统的 pip
和 virtualenv
。它提供了快速的依赖解析、安装和虚拟环境管理功能。
本指南将介绍如何使用 uv
进行项目初始化、依赖管理、虚拟环境操作以及常见问题的解决方法。
目录
安装 uv
确保你已经安装了 uv
。如果尚未安装,可以通过以下命令安装:
bash
pip install uv
初始化新项目
创建新项目
使用 uv init
命令初始化一个新的 Python 项目,并生成默认的配置文件(如 pyproject.toml
)。
bash
uv init my_project
cd my_project
此时,目录中会包含:
pyproject.toml
:项目的元信息和依赖声明。.venv/
:虚拟环境目录(由uv
自动创建)。
依赖管理
添加依赖
使用 uv add
命令向项目中添加依赖,并自动更新 pyproject.toml
文件:
bash
uv add requests
如果需要指定版本范围,例如只允许安装 requests>=2.0,<3.0
,可以这样写:
bash
uv add "requests>=2.0,<3.0"
移除依赖
使用 uv remove
命令从项目中移除某个依赖,并同步更新 pyproject.toml
文件:
bash
uv remove requests
锁定依赖版本
使用 uv lock
命令生成或更新 uv.lock
文件,锁定所有依赖的具体版本及其子依赖:
bash
uv lock
注意: 如果运行 uv lock
时遇到以下错误:
go
error: No `pyproject.toml` found in current directory or any parent directory
请确保当前目录下存在 pyproject.toml
文件。如果没有,请先创建一个 pyproject.toml
文件,或者使用 uv init
初始化项目。
同步依赖
当 uv.lock
文件存在时,可以使用 uv sync
命令根据锁定的版本安装依赖:
bash
uv sync
虚拟环境管理
自动创建虚拟环境
uv
在首次运行时会自动为你创建虚拟环境,默认位于项目的 .venv/
目录下。无需手动激活虚拟环境即可运行脚本:
bash
uv run main.py
手动激活虚拟环境
如果你需要手动激活虚拟环境,可以使用以下命令:
bash
source .venv/bin/activate
退出虚拟环境时使用:
bash
deactivate
已初始化项目
当你克隆一个已初始化的项目时,通常会遇到以下几种情况:
项目中有 uv.lock
文件
如果项目中已经包含了 uv.lock
文件,表示依赖已经被锁定。你可以直接运行以下命令同步依赖:
bash
uv sync
项目中只有 pyproject.toml
文件
如果项目中只有 pyproject.toml
文件而没有 uv.lock
文件,你需要先锁定依赖:
bash
uv lock
uv sync
项目中只有 requirements.txt
文件
如果项目中只有 requirements.txt
文件,可以使用以下命令安装依赖:
bash
uv pip install -r requirements.txt
如果需要迁移到 pyproject.toml
和 uv.lock
格式,可以先安装依赖,然后生成 pyproject.toml
和 uv.lock
文件:
bash
uv pip install -r requirements.txt
uv init
uv lock
发布包
uv
还支持打包和发布 Python 包到 PyPI。以下是简单的流程:
构建包
使用以下命令构建可发布的包:
bash
uv build
这会在 dist/
目录下生成 .whl
和 .tar.gz
文件。
发布包
使用以下命令发布到 PyPI:
bash
uv publish
常见问题
如何创建 venv 文件?
使用 uv init
命令创建 .venv
目录:
bash
uv init
如何清理虚拟环境?
如果需要重新初始化虚拟环境,可以删除 .venv/
目录并重新运行 uv sync
:
bash
rm -rf .venv/
uv sync
如何升级 uv 本身?
使用以下命令升级 uv
:
bash
pip install --upgrade uv
如何检查依赖冲突?
使用 uv check
命令检查项目的依赖是否存在冲突:
bash
uv check