migrate-pip-to-uv
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseMigrate pip/pip-tools Monorepo to uv
将pip/pip-tools单体仓库迁移至uv
A skill for automating the migration of a Python monorepo project from pip/pip-tools workflows (requirements files, pip-compile, etc) to uv's project workflow (pyproject.toml, uv.lock, universal resolution).
这是一项用于自动将Python单体仓库项目从pip/pip-tools工作流(requirements文件、pip-compile等)迁移至uv项目工作流(pyproject.toml、uv.lock、通用依赖解析)的技能。
Purpose
目的
- Convert requirements files (requirements.in, requirements.txt, requirements-dev.in, requirements-dev.txt, etc) to pyproject.toml and uv.lock
- Migrate development, docs, and platform-specific dependency groups
- Ensure universal, locked dependencies for all platforms
- Update project workflows to use uv commands and environments
- 将requirements文件(requirements.in、requirements.txt、requirements-dev.in、requirements-dev.txt等)转换为pyproject.toml和uv.lock
- 迁移开发、文档及特定平台的依赖组
- 确保所有平台的依赖均为通用且已锁定版本
- 更新项目工作流以使用uv命令和环境
Workflow Steps
工作流步骤
- Analyze Existing Requirements Files
- Detect requirements.in, requirements.txt, requirements-dev.in, requirements-dev.txt, requirements-docs.in, requirements-docs.txt, etc
- Identify platform-specific requirements files (e.g. requirements-win.txt, requirements-linux.txt)
- Initialize uv Project
- Run to create pyproject.toml if not present
uv init
- Run
- Import Base Dependencies
- Run to preserve locked versions
uv add -r requirements.in -c requirements.txt
- Run
- Import Development Dependencies
- Run
uv add --dev -r requirements-dev.in -c requirements-dev.txt - If requirements-dev.in includes , strip those lines before import
-r requirements.in
- Run
- Import Docs/Other Groups
- Run (repeat for other groups)
uv add -r requirements-docs.in -c requirements-docs.txt --group docs
- Run
- Import Platform-Specific Constraints
- For each platform file, use
uv pip compile requirements.in -o requirements-<platform>.txt --python-platform <platform> --no-strip-markers - Add with
uv add -r requirements.in -c requirements-win.txt -c requirements-linux.txt ...
- For each platform file, use
- Import Dependency Sources
- For local paths or git dependencies, ensure they are mapped in in pyproject.toml
[tool.uv.sources]
- For local paths or git dependencies, ensure they are mapped in
- Sync and Lock
- Run to generate uv.lock
uv lock - Run to create .venv and sync environment
uv sync
- Run
- Update Project Workflows
- Replace pip/pip-tools commands with uv equivalents (e.g. )
uv run pytest - Document new workflow in README.md
- Replace pip/pip-tools commands with uv equivalents (e.g.
- 分析现有Requirements文件
- 检测requirements.in、requirements.txt、requirements-dev.in、requirements-dev.txt、requirements-docs.in、requirements-docs.txt等文件
- 识别特定平台的requirements文件(例如requirements-win.txt、requirements-linux.txt)
- 初始化uv项目
- 若pyproject.toml不存在,运行创建该文件
uv init
- 若pyproject.toml不存在,运行
- 导入基础依赖
- 运行以保留锁定版本
uv add -r requirements.in -c requirements.txt
- 运行
- 导入开发依赖
- 运行
uv add --dev -r requirements-dev.in -c requirements-dev.txt - 若requirements-dev.in包含行,在导入前移除这些行
-r requirements.in
- 运行
- 导入文档/其他组依赖
- 运行(其他组重复此操作)
uv add -r requirements-docs.in -c requirements-docs.txt --group docs
- 运行
- 导入特定平台约束
- 针对每个平台文件,使用
uv pip compile requirements.in -o requirements-<platform>.txt --python-platform <platform> --no-strip-markers - 通过添加约束
uv add -r requirements.in -c requirements-win.txt -c requirements-linux.txt ...
- 针对每个平台文件,使用
- 导入依赖源
- 对于本地路径或Git依赖,确保在pyproject.toml的中进行映射
[tool.uv.sources]
- 对于本地路径或Git依赖,确保在pyproject.toml的
- 同步与锁定
- 运行生成uv.lock文件
uv lock - 运行创建.venv并同步环境
uv sync
- 运行
- 更新项目工作流
- 将pip/pip-tools命令替换为对应的uv命令(例如)
uv run pytest - 在README.md中记录新的工作流
- 将pip/pip-tools命令替换为对应的uv命令(例如
Example Usage
示例用法
plaintext
migrate-pip-to-uvplaintext
migrate-pip-to-uvExample Migration Commands
示例迁移命令
uv inituv add -r requirements.in -c requirements.txtuv add --dev -r requirements-dev.in -c requirements-dev.txtuv add -r requirements-docs.in -c requirements-docs.txt --group docsuv pip compile requirements.in -o requirements-win.txt --python-platform windows --no-strip-markersuv add -r requirements.in -c requirements-win.txt -c requirements-linux.txtuv lockuv syncuv run pytest
uv inituv add -r requirements.in -c requirements.txtuv add --dev -r requirements-dev.in -c requirements-dev.txtuv add -r requirements-docs.in -c requirements-docs.txt --group docsuv pip compile requirements.in -o requirements-win.txt --python-platform windows --no-strip-markersuv add -r requirements.in -c requirements-win.txt -c requirements-linux.txtuv lockuv syncuv run pytest
Best Practices
最佳实践
- Use pyproject.toml for all dependency groups
- Use uv.lock for universal, platform-agnostic locking
- Prefer uv run for all commands in the environment
- Document migration steps and new workflow for contributors
- Remove obsolete requirements files after migration
- 使用pyproject.toml管理所有依赖组
- 使用uv.lock实现跨平台通用的依赖锁定
- 优先使用uv run执行环境中的所有命令
- 为贡献者记录迁移步骤及新工作流
- 迁移完成后移除过时的requirements文件