Python Environment 是一个基于 uv 的 Python 环境管理技能,用于创建项目、管理依赖、运行代码以及安装命令行工具。
用途
该技能面向 Python 项目的环境与依赖管理,覆盖从项目初始化到依赖增删、锁定、同步和运行的全流程。它主张用 uv 替代 pip,资料称 uv 比 pip 快 10-100 倍,并优先推荐 uv 项目工作流(uv add / uv sync / uv run),而不是 uv pip 兼容层,理由是项目工作流会自动管理 pyproject.toml 与锁文件,结果可复现。
主要能力
技能整理了一组常用命令,按任务划分:
启动项目:uv init <name> 创建应用;uv init --package <name> 创建可安装包(采用 src/ 布局)。 添加依赖:uv add httpx。 添加开发依赖:uv add --dev pytest ruff。 移除依赖:uv remove httpx。 从锁文件同步环境:uv sync。 在项目环境中运行:uv run pytest。 更新锁文件:uv lock。 安装 CLI 工具:uv tool install ruff;一次性运行:uvx ruff。 安装 Python:uv python install 3.12。
项目初始化方面,uv init 会创建 pyproject.toml、固定 Python 版本,并为后续 uv add / uv sync 做好准备。资料建议:凡是带测试套件或计划发布的项目,优先使用 --package(src)布局。
依赖管理方面,uv add 会写入 [project.dependencies] 并更新锁文件;uv add --dev 写入开发依赖组;支持 uv add "fastapi[standard]" 这类 extras 写法;uv sync 会依据 pyproject 与 uv.lock 把依赖安装进 .venv,保证可复现;手动编辑 pyproject 后可用 uv lock 刷新锁文件。uv 会自动创建和管理 .venv,通常无需手动激活,只需在命令前加 uv run。
运行代码方面,资料强调在 uv 项目中不要直接调用裸 python / pytest / ruff,因为它们可能解析到不同的解释器,应始终使用 uv run,例如 uv run python script.py、uv run pytest、uv run -- ruff check .(-- 用于结束 uv 的参数解析)。
命令行工具方面,uv tool install 提供持久、隔离并位于 PATH 上的安装,uv tool upgrade 用于升级,uvx 用于临时一次性运行。资料建议:开发者 CLI(如 ruff、pre-commit、httpie)用 uv tool / uvx,只有代码需要 import 的包才用 uv add。
Python 版本方面,uv python install 3.12 下载受管解释器,uv python list 列出可用与已安装版本,uv init --python 3.12 app 可将项目固定到指定版本。资料建议以 3.11+ 作为新项目下限(TaskGroup、Self、更快的解释器),并提及可查阅 python.org 获取当前稳定版本。
资料还给出了一个最小 pyproject.toml 示例,包含 [project] 段(name、version、requires-python、dependencies)与 [dependency-groups] 段的 dev 依赖组,并说明 uv add --dev <pkg> 负责管理该组。
使用方式与兼容层
uv pip 是兼容层,用于 uv 不管理的环境(手工创建的 venv、遗留 requirements.txt、非 uv 原生的 CI),它不会更新 pyproject.toml 或锁文件。资料建议仅在无法控制项目时才使用,并列出:uv venv 创建裸 venv;uv pip install -r requirements.txt 安装遗留依赖;uv pip install -e . 在非受管 venv 中可编辑安装;uv pip compile requirements.in -o requirements.txt 生成固定版本的 requirements。
适用场景
适合需要用 uv 统一管理 Python 项目依赖、锁定与运行的开发流程;适合需要隔离安装开发者 CLI 的场景;也适合处理遗留 requirements.txt 的迁移或过渡场景。资料称该技能是无前置条件的基础技能,可在此之上构建 python-typing-ops(类型提示)、python-pytest-ops(测试基础设施)和 python-fastapi-ops(Web API 开发)。
限制与排障
资料列出了常见问题与处理方式:出现 “No Python found” 时执行 uv python install 3.12;需要固定项目 Python 时使用 uv init --python 3.12 或编辑 requires-python;遇到锁/解析冲突可用 uv lock --resolution=lowest-direct 探测后放宽版本范围;拉取代码后环境过期执行 uv sync;缓存问题执行 uv cache clean。
其他说明
资料提到可加载 ./references/pyproject-patterns.md(完整 pyproject 示例与工具配置)、./references/dependency-management.md(锁文件、工作区、私有包)和 ./references/publishing.md(PyPI 发布、版本管理、CI/CD)获取更详细模式。关于该技能的具体收费、价格、平台支持范围与效果数据,资料暂未提供。