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

参考资料


相关推荐
忘却的旋律dw7 分钟前
使用LLM模型的tokenizer报错AttributeError: ‘dict‘ object has no attribute ‘model_type‘
人工智能·pytorch·python
20岁30年经验的码农15 分钟前
Java RabbitMQ 实战指南
java·开发语言·python
studytosky2 小时前
深度学习理论与实战:MNIST 手写数字分类实战
人工智能·pytorch·python·深度学习·机器学习·分类·matplotlib
上不如老下不如小2 小时前
2025年第七届全国高校计算机能力挑战赛初赛 Python组 编程题汇总
开发语言·python·算法
Q_Q5110082852 小时前
python+django/flask的结合人脸识别和实名认证的校园论坛系统
spring boot·python·django·flask·node.js·php
Q_Q5110082852 小时前
python+django/flask的选课系统与课程评价整合系统
spring boot·python·django·flask·node.js·php
charlie1145141912 小时前
勇闯前后端Week2:后端基础——Flask API速览
笔记·后端·python·学习·flask·教程
豐儀麟阁贵3 小时前
8.2异常的抛出与捕捉
java·开发语言·python
interception3 小时前
爬虫js逆向,jsdom补环境,抖音,a_bogus
javascript·爬虫·python
林炳然3 小时前
Python-Basic Day-5 函数-生成器&装饰器
python