python-packaging について
uvと最新のビルドツールでPythonパッケージを構築・公開する開発者向けのクイックリファレンスです。パッケージメタデータ、ビルド設定、バージョン管理、エントリーポイント、PyPIやプライベートインデックスへの公開を扱います。
主な機能
- 01wheelとsdistのビルド
- 02PyPIやプライベートインデックスへの公開
- 03パッケージメタデータとビルドシステムの設定
- 04バージョンとエントリーポイントの設定
- 05編集可能インストールへの対応
活用シーン
- 01リリース用の配布ファイルをビルド
- 02PyPIへのパッケージ公開
- 03パッケージのコンソールコマンド設定
- 04バージョンとビルドバックエンドの設定
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ laurigates/ claude-plugins --skill python-packagingインストール後、Claude Code で/python-packagingを入力して読み込まれたか確認します。
同梱ファイルREFERENCE.md
詳細
Python パッケージング
UV と最新のビルドツールを使用して Python パッケージをビルド、公開するためのクイックリファレンスです。
このスキルを使用する場面
| 次のような場合はこのスキルを使用します… | 次のような場合は uv-project-management を使用します… |
|---|---|
PyPI 配布用に uv build で wheel/sdist をビルドする | 新しいプロジェクトの pyproject.toml を設定する、または実行時依存関係を追加する |
uv publish で PyPI またはプライベートインデックスにリリースを公開する | ロックファイルを管理する、またはローカルの仮想環境を同期する |
| 配布用にエントリーポイント、コンソールスクリプト、パッケージメタデータを設定する | 依存関係の競合を解決する、または開発用のバージョンを固定する |
このスキルが適用される場面
- Python パッケージ(wheel、sdist)のビルド
- PyPI またはプライベートインデックスへの公開
- パッケージのバージョン管理
- ビルドシステムの設定
- 編集可能インストール
クイックリファレンス
パッケージのビルド
# Build package
uv build
# Build specific formats
uv build --wheel
uv build --sdist
# Output location: dist/
公開
# Publish to PyPI
uv publish
# With token
uv publish --token $PYPI_TOKEN
# To Test PyPI
uv publish --publish-url https://test.pypi.org/legacy/
パッケージ構成
my-package/
├── pyproject.toml
├── README.md
├── LICENSE
├── src/
│ └── my_package/
│ ├── __init__.py
│ ├── __version__.py
│ └── main.py
└── tests/
pyproject.toml の設定
[project]
name = "my-package"
version = "0.1.0"
description = "A great package"
readme = "README.md"
requires-python = ">=3.11"
license = {text = "MIT"}
authors = [
{name = "Your Name", email = "[email protected]"}
]
keywords = ["python", "package"]
classifiers = [
"Development Status :: 4 - Beta",
"Intended Audience :: Developers",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.11",
]
dependencies = [
"requests>=2.31.0",
]
[project.optional-dependencies]
dev = ["pytest", "ruff", "ty"]
[project.urls]
Homepage = "https://github.com/user/my-package"
Documentation = "https://my-package.readthedocs.io"
Repository = "https://github.com/user/my-package.git"
Issues = "https://github.com/user/my-package/issues"
[project.scripts]
my-cli = "my_package.cli:main"
[build-system]
requires = ["uv_build>=0.9.2,<0.10.0"]
build-backend = "uv_build"
バージョン管理
[project]
version = "0.1.0" # Manual versioning
# Dynamic versioning (from git tags)
dynamic = ["version"]
[tool.uv]
version-provider = "git"
エントリーポイント
[project.scripts]
my-cli = "my_package.cli:main"
[project.gui-scripts]
my-gui = "my_package.gui:main"
[project.entry-points."my_plugin"]
plugin1 = "my_package.plugins:plugin1"
ビルドバックエンド
UV Build(デフォルト)
[build-system]
requires = ["uv_build>=0.9.2,<0.10.0"]
build-backend = "uv_build"
Setuptools
[build-system]
requires = ["setuptools>=68", "wheel"]
build-backend = "setuptools.build_meta"
Hatchling
[build-system]
requires = ["hatchling>=1.18"]
build-backend = "hatchling.build"
一般的なワークフロー
PyPI に公開する
# 1. Build
uv build
# 2. Check built packages
ls dist/
# 3. Publish
uv publish --token $PYPI_TOKEN
まず Test PyPI でテストする
# Publish to Test PyPI
uv publish --publish-url https://test.pypi.org/legacy/ \
--token $TEST_PYPI_TOKEN
# Test installation
pip install --index-url https://test.pypi.org/simple/ my-package
パッケージ分類子
一般的な分類子:
classifiers = [
# Development Status
"Development Status :: 3 - Alpha",
"Development Status :: 4 - Beta",
"Development Status :: 5 - Production/Stable",
# Audience
"Intended Audience :: Developers",
"Intended Audience :: Science/Research",
# License
"License :: OSI Approved :: MIT License",
# Python Versions
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
# Framework
"Framework :: Django",
"Framework :: FastAPI",
# Topic
"Topic :: Software Development :: Libraries",
"Topic :: Scientific/Engineering",
]
一覧:https://pypi.org/classifiers/
関連項目
uv-project-management- プロジェクトの設定と依存関係python-development- Python の基本パターンuv-workspaces- ワークスペースパッケージのビルド
参考資料
- UV build:https://docs.astral.sh/uv/guides/publish/
- PyPI:https://pypi.org/
- 詳細なガイド:「REFERENCE.md」を参照してください
コメント
Markdown 対応