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

参考资料


相关推荐
豌豆花下猫34 分钟前
Python 潮流周刊#101:Rust 开发的 Python 类型检查工具(摘要)
后端·python·ai
m0_5782678639 分钟前
从零开始的python学习(六)P86+P87+P88
python·学习
为啥全要学1 小时前
vLLM部署Qwen2-7B模型推理
python·langchain·vllm
假女吖☌1 小时前
Maven 处理依赖冲突
java·python·maven
萧鼎2 小时前
探索 Python 的 Optipoly 库:多变量多项式优化利器
开发语言·python
一个天蝎座 白勺 程序猿2 小时前
Python爬虫(22)Python爬虫进阶:Scrapy框架动态页面爬取与高效数据管道设计
爬虫·python·scrapy
YoungHong19922 小时前
Ubuntu通过源码编译方式单独安装python3.12
linux·运维·python·ubuntu
满怀10153 小时前
【LangChain全栈开发指南】从LLM集成到智能体系统构建
人工智能·python·langchain·ai编程·智能体开发
撸码到无法自拔4 小时前
加速LLM大模型推理,KV缓存技术详解与PyTorch实现
人工智能·pytorch·python·深度学习·缓存