" name="sm-site-verification"/>

目 录CONTENT

文章目录

Python包管理工具 uv

PySuper
2025-10-18 / 0 评论 / 0 点赞 / 4 阅读 / 0 字
温馨提示:
所有牛逼的人都有一段苦逼的岁月。 但是你只要像SB一样去坚持,终将牛逼!!! ✊✊✊

依赖分组

使用流程

# 全局下安装uv
pip install uv

# 创建虚拟环境
uv venv .venv

# 指定版本
uv venv --python 3.11 .venv

# 初始化uv相关文件
uv init

# 根据pyroject.toml安装环境
uv sync

# 将pyproject.toml中的包 安装到当前激活的环境中
uv sync --active

# 安装包
uv add pkg-name

# 查看包列表
uv pip list

# 移除包
uv remove pkg-name

# 更新uv
pip install --upgrade uv

分组管理

  • uv sync:等价于安装 [project.dependencies]

  • 安装到指定分组:uv add --group local numpy

  • 安装 指定分组的包:uv sync --group dev

  • 安装多个分组:uv sync --group prod --group test

# 配置uv中使用的pip安装源
[[tool.uv.index]]
url = "http://mirrors.aliyun.com/pypi/simple/"
default = true

# 禁用 F403(无法解析的导入 *)和 F405(未定义的变量,由于 * 导入)
[tool.ruff.lint]
ignore = ["F403", "F405"]

[project]
name = "ProjectName"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.12"
dependencies = [
    # 基础依赖(所有环境共享)
    "loguru>=0.7.3",
]

# 依赖分组
# uv add --group group-name pkg-name
# uv sync --group group-name
[dependency-groups]
# 开发环境依赖(如测试、格式化工具)
dev = [
    "pytest>=7.0",       # 测试工具
    "black>=23.0",       # 代码格式化
    "ruff>=0.1",         #  lint 工具
]

# 生产环境额外依赖(如部署相关)
prod = [
    "gunicorn>=20.1",    # WSGI 服务器
    "uvicorn>=0.23.0",   # ASGI 服务器
]

# 测试环境依赖(可继承 dev 并添加专属包)
test = [
    "pytest-cov>=4.0",   # 测试覆盖率
    *dev,  # 继承 dev 分组的所有依赖(TOML 1.0 语法)
]

高级特性

uv 作为一款现代的 Python 包管理工具,除了基础的包安装和环境管理功能,还集成了一系列旨在提升开发效率和可靠性的高级功能。下面这个表格汇总了它的核心高级特性:

功能类别

核心命令/配置

主要参数/选项

用途说明

🔧 项目管理

uv init

--package

--lib

初始化项目,生成标准目录结构

uv add

--group <group-name>

为指定依赖组添加包

uv sync

--group

--frozen

--clean

安装项目依赖

--frozen 确保安装严格基于 uv.lock

🔒 依赖管理

uv lock

--upgrade-package <pkg>

生成或更新锁文件

uv tree

--reverse

可视化依赖树,排查冲突

⚡️ 脚本与工具

uv run

-

无需激活环境,直接运行脚本或工具

uv tool

-

替代 pipx,安装和运行CLI工具

🐍 解释器管理

uv python install

<version>

安装特定版本的Python

uv venv

--python

--name

创建虚拟环境

🌐 镜像源配置

编辑 uv.toml

url

efault

配置国内镜像源以加速下载

🔧 项目管理与依赖控制

uv 在此方面的设计非常实用和严谨。

  • 项目初始化与结构:使用 uv init 可以快速创建一个结构规范的项目,自动生成 src 目录、测试目录、pyproject.toml 等。

  • 精细的依赖分组:你可以在 pyproject.toml 中定义不同的依赖组,例如 dev(开发)、test(测试)、docs(文档)。这允许你根据不同的场景安装不同的依赖集合。
    通过 uv add --group dev pytest black 添加包到指定组,再使用 uv sync --group dev,test 来同步特定组的依赖。

  • 可靠的锁文件机制uv.lock 文件确保了依赖环境的完全可复现。命令 uv lock 会解析当前依赖并更新锁文件。在生产环境下,使用 uv sync --frozen 可以严格安装锁文件中记录的版本,避免意外升级引入风险。

⚡️ 高效的脚本与工具运行

uv 简化了执行环节。

  • uv run:这是 uv 的一个亮点。你无需手动激活虚拟环境,直接使用 uv run python your_script.pyuv run pytest,uv 会自动在当前项目的上下文中执行命令。

  • 全局工具管理uv tool 命令可以替代 pipx,用于安装和运行独立的 Python 命令行工具。

🐍 无缝的Python版本管理

uv 可以帮你安装和管理多个 Python 解释器,无需依赖 pyenv

  • 使用 uv python install 3.9 3.10 3.11 可以一次性安装多个版本。

  • 创建虚拟环境时,可以通过 uv venv --python 3.11 直接指定使用已安装的特定版本。

🌐 配置镜像源加速下载

对于国内用户,可以通过修改配置文件来大幅提升下载速度。

  • 创建或编辑 ~/.config/uv/uv.toml 文件(Linux/macOS)或 %USERPROFILE%\.config\uv\uv.toml(Windows)。

  • 填入国内镜像源,例如:

[[index]]
url = "https://pypi.tuna.tsinghua.edu.cn/simple/"
default = true

其他可选镜像源包括阿里云、中科大和豆瓣源。

实用参数与技巧

  • 清理与重建:如果虚拟环境出现问题,uv venv --force 可以强制重新创建。uv sync --clean 会在同步前清理环境,确保纯净。

  • 依赖排查:当依赖关系复杂导致冲突时,uv tree 可以展示依赖树,而 uv tree --reverse <package-name> 可以帮助你查看是哪个包引入了特定的依赖。

0
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区