使用 uv 管理 Python 项目
uv 是一个高性能的 Python 包管理工具,旨在替代传统的 pip 和 virtualenv。它提供了快速的依赖解析、安装和虚拟环境管理功能。
本指南将介绍如何使用 uv 进行项目初始化、依赖管理、虚拟环境操作以及常见问题的解决方法。
目录
安装 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