# 使用 uv 管理 Python 项目

使用 uv 管理 Python 项目

uv 是一个高性能的 Python 包管理工具,旨在替代传统的 pipvirtualenv。它提供了快速的依赖解析、安装和虚拟环境管理功能。

本指南将介绍如何使用 uv 进行项目初始化、依赖管理、虚拟环境操作以及常见问题的解决方法。


目录

  1. [安装 uv](#安装 uv "#%E5%AE%89%E8%A3%85-uv")
  2. 初始化新项目
  3. 依赖管理
  4. 虚拟环境管理
  5. 克隆已有项目
  6. 发布包
  7. 常见问题

安装 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.tomluv.lock 格式,可以先安装依赖,然后生成 pyproject.tomluv.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

参考资料


相关推荐
小玮看世界6 分钟前
[Python]动态规划三步走:从爬楼梯到打家劫舍,再到最大子数组和
开发语言·python·动态规划
风萧萧199913 分钟前
JAVA :JSONObject转换为XML
xml·java·python
海拥✘15 分钟前
网页抓取 API 稳定性怎么测?用 Dataify 完成一次真实压测
python
databook16 分钟前
几何分布:从“等一个结果”开始
python·数据挖掘·数据分析
用户03321266636730 分钟前
如何在 Python 环境中裁剪 PDF 页面
python
威联通网络存储33 分钟前
TS-h2287XU-RP 在医药制造批记录与合规归档场景的部署
python·制造
蓝鸟197440 分钟前
Python Flask + Oracle 接口开发 小白完整版笔记(入参/查库/批量/JSON/避坑)
python·oracle·flask
正在走向自律1 小时前
从 Python 基础到大模型落地:读《深入浅出 Python 人工智能》,吃透 AI 工程化 CRUD 实战
开发语言·人工智能·python·机器学习·知识脉络
171320330计算机毕设编程1 小时前
2027计算机毕设五大方向对比&选题推荐
java·ide·python·算法·django·php·推荐算法
Zane19941 小时前
去重用 set 到底能快多少?实测差距接近三百倍
后端·python