# 使用 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

参考资料


相关推荐
Flyora11 小时前
【踩坑实录】PyInstaller 打包 “找不到库的完整解决方案
python
测试老哥11 小时前
2026软件测试面试大全(含答案+文档)
自动化测试·软件测试·python·测试工具·面试·职场和发展·测试用例
yaoh.wang11 小时前
力扣(LeetCode) 28: 找出字符串中第一个匹配项的下标 - 解法思
python·程序人生·算法·leetcode·面试·职场和发展·跳槽
手揽回忆怎么睡12 小时前
win11灵活控制Python版本,使用pyenv-win
开发语言·python
唯唯qwe-12 小时前
Day20:贪心算法,跳跃游戏
python·算法·贪心算法
@淡 定12 小时前
动态代理(JDK动态代理/CGLIB动态代理
java·开发语言·python
破烂pan12 小时前
Python 整合 Redis 哨兵(Sentinel)与集群(Cluster)实战指南
redis·python·sentinel
程序员杰哥12 小时前
接口测试之文件上传
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·接口测试
2401_8414956412 小时前
【自然语言处理】单字与双字字频统计算法设计
人工智能·python·算法·自然语言处理·单字·双字·字频统计
fegggye12 小时前
创建一个rust写的python库[signatures和错误处理]
开发语言·python·rust