mcpField
P
python-packaging

python-packaging

github.com/laurigates開発59308 回インストール今日更新
リポジトリ

python-packaging について

uvと最新のビルドツールでPythonパッケージを構築・公開する開発者向けのクイックリファレンスです。パッケージメタデータ、ビルド設定、バージョン管理、エントリーポイント、PyPIやプライベートインデックスへの公開を扱います。

主な機能

  1. 01wheelとsdistのビルド
  2. 02PyPIやプライベートインデックスへの公開
  3. 03パッケージメタデータとビルドシステムの設定
  4. 04バージョンとエントリーポイントの設定
  5. 05編集可能インストールへの対応

活用シーン

  1. 01リリース用の配布ファイルをビルド
  2. 02PyPIへのパッケージ公開
  3. 03パッケージのコンソールコマンド設定
  4. 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 - ワークスペースパッケージのビルド

参考資料

コメント