uv-advanced-dependencies について
uv プロジェクトの高度な依存関係管理を扱うクイックリファレンスです。Python 開発者が Git やパスの参照元、依存グループ、インデックス、制約、ビルド要件を設定する際に役立ちます。
主な機能
- 01Git、URL、パス依存関係
- 02編集可能インストール
- 03依存グループと追加依存関係
- 04カスタムおよびプライベートインデックス
- 05バージョン制約とビルド依存関係
活用シーン
- 01Git のブランチやタグからライブラリを追加
- 02ローカルチェックアウトを使った開発
- 03テスト用とドキュメント用の依存関係を分離
- 04プライベートインデックスからパッケージを導入
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ laurigates/ claude-plugins --skill uv-advanced-dependenciesインストール後、Claude Code で/uv-advanced-dependenciesを入力して読み込まれたか確認します。
同梱ファイルREFERENCE.md
詳細
UV の高度な依存関係
UV プロジェクトにおける高度な依存関係のクイックリファレンスです。
このスキルを使用する場面
| 次のような場合にこのスキルを使用します… | 次のような場合は、目的に特化した関連スキルを使用します… |
|---|---|
| 依存関係を Git URL、ブランチ、タグに固定する場合、または編集可能モードでインストールする場合 | 通常の PyPI 依存関係を追加する場合 — uv-project-management を使用してください |
[tool.uv.sources]、依存関係グループ、エクストラ、カスタムインデックスを設定する場合 | ワークスペースメンバー間でソース宣言を共有する場合 — uv-workspaces を使用してください |
| プライベートパッケージインデックスやビルド時の制約を設定する場合 | --with 依存関係を使用して一時的なスクリプトを実行する場合 — uv-run を使用してください |
このスキルが適用される場面
- Git リポジトリの依存関係
- ローカルパスの依存関係
- 編集可能インストール
- 依存関係の制約
- カスタムパッケージインデックス
- 依存関係グループとエクストラ
- ビルド依存関係
クイックリファレンス
Git 依存関係
# Add from Git repository
uv add git+https://github.com/psf/requests
uv add git+https://github.com/pallets/flask@main
uv add git+ssh://[email protected]/user/[email protected]
# Specific branch, tag, or commit
uv add git+https://github.com/user/repo@feature-branch
uv add git+https://github.com/user/[email protected]
uv add git+https://github.com/user/repo@abc123
パスの依存関係
# Add from local path
uv add --editable ./local-package
uv add ../another-project
uv add /absolute/path/to/package
# Non-editable path
uv add --no-editable ./local-package
依存関係グループ
# Add to named group
uv add --group docs sphinx mkdocs
uv add --group test pytest pytest-cov
# Install specific groups
uv sync --group docs
uv sync --group test --group docs
# Install all groups
uv sync --all-groups
エクストラ(オプションの依存関係)
# Install package with extras
uv add 'fastapi[all]'
uv add 'sqlalchemy[postgresql,mypy]'
# Define extras in pyproject.toml
[project.optional-dependencies]
dev = ["pytest", "ruff"]
docs = ["mkdocs", "mkdocs-material"]
制約ファイル
# Apply version constraints
uv pip compile requirements.in --constraint constraints.txt
# constraints.txt example:
# numpy<2.0
# pandas==2.0.3
カスタムインデックス
[tool.uv]
index-url = "https://pypi.org/simple"
extra-index-url = [
"https://custom.pypi.org/simple",
]
pyproject.toml の Git 依存関係
[project]
dependencies = [
"my-package",
]
[tool.uv.sources]
my-package = { git = "https://github.com/user/my-package" }
# With branch
my-package = { git = "https://github.com/user/my-package", branch = "main" }
# With tag
my-package = { git = "https://github.com/user/my-package", tag = "v1.0.0" }
# With commit
my-package = { git = "https://github.com/user/my-package", rev = "abc123" }
pyproject.toml のパス依存関係
[project]
dependencies = [
"my-local-package",
]
[tool.uv.sources]
my-local-package = { path = "../my-local-package" }
# Editable (default for paths)
my-local-package = { path = "../my-local-package", editable = true }
# Non-editable
my-local-package = { path = "../my-local-package", editable = false }
依存関係グループ
[dependency-groups]
dev = [
"pytest>=7.0",
"pytest-cov>=4.0",
"ruff>=0.1.0",
]
docs = [
"mkdocs-material>=9.0",
"mkdocstrings[python]>=0.24",
]
test = [
"pytest-asyncio>=0.21",
"pytest-mock>=3.12",
]
URL 依存関係
# Add from direct URL
uv add https://files.pythonhosted.org/packages/.../requests-2.31.0.tar.gz
# In pyproject.toml
[tool.uv.sources]
my-package = { url = "https://example.com/my-package-1.0.tar.gz" }
プライベートパッケージインデックス
[tool.uv]
# Primary index
index-url = "https://pypi.org/simple"
# Additional indexes
extra-index-url = [
"https://${PRIVATE_TOKEN}@private.pypi.org/simple",
]
# Find links
find-links = [
"https://download.pytorch.org/whl/cu118",
]
# Set token via environment
export PRIVATE_TOKEN="secret"
uv sync
ビルド依存関係
[build-system]
requires = [
"setuptools>=68",
"wheel",
"Cython>=3.0",
]
build-backend = "setuptools.build_meta"
よくあるパターン
ローカルチェックアウトからの開発
# Clone dependency
git clone https://github.com/user/lib.git ../lib
# Add as editable
cd my-project
uv add --editable ../lib
モノレポのパス依存関係
[tool.uv.sources]
my-core = { path = "packages/core" }
my-utils = { path = "packages/utils" }
混在するソース
[project]
dependencies = [
"fastapi", # PyPI
"my-lib", # Git
"my-local", # Path
]
[tool.uv.sources]
my-lib = { git = "https://github.com/user/my-lib" }
my-local = { path = "../my-local" }
解決方法
[tool.uv]
# Highest compatible (default)
resolution = "highest"
# Lowest compatible
resolution = "lowest"
# Lowest direct, highest transitive
resolution = "lowest-direct"
関連項目
uv-project-management- 基本的な依存関係の管理uv-workspaces- ワークスペースメンバーの依存関係python-packaging- ビルドシステムの設定
参考資料
- 公式ドキュメント:https://docs.astral.sh/uv/concepts/dependencies/
- 詳細ガイド:このスキルディレクトリの REFERENCE.md を参照してください
コメント
Markdown 対応