# 使用 uv 管理 Python 项目

使用 uv 管理 Python 项目

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

本指南将介绍如何使用 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.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

参考资料


相关推荐
杨杨杨大侠5 小时前
Jev、Kev、Laya:决策模型怎么选,什么时候需要微调?
人工智能·python·agent
LOVE️YOU6 小时前
Python 在定义函数时,究竟定义的是什么?
python
段一凡-华北理工大学6 小时前
大模型应用开发 100 天:Python + LLM 从入门到精通 day26~Prompt 调试与优化——A/B 测试与效果评估
windows·python·大模型·prompt·智能体·提示词工程·高炉智能化
Minecraft红客6 小时前
以撒的结合
python·游戏·电脑·娱乐
Circ.6 小时前
Python 调试 Litellm 本地大模型接口:模型列表与对话接口实操踩坑记录
开发语言·python
风早爽太7 小时前
用 ‌Render‌ 快速部署网站和常见问题解决
python·fastapi
李航19838 小时前
给自己的图形引擎,配上了AI渲染,做设计真是太方便了
人工智能·python·计算机视觉·ai·ai编程
L@ncor8 小时前
第六章 框架开发实践 · 学习笔记(AutoGen / AgentScope / CAMEL / LangGraph)
python·框架·autogen·langgraph·agentscope
Zhou1411368 小时前
SpringSecurity_02_授权与高级功能
开发语言·python
摇滚侠9 小时前
《On Java 中文版 基础卷》阅读笔记 对象无处不在 03
java·笔记·python