Python 開発・パッケージング ガイド (2024)

概要

Python パッケージ化ツールは大幅に進化し、依存関係の管理、パッケージの構築、配布のためのさまざまなオプションを開発者に提供しています。 2024 年に最も一般的に使用されているツールは、Poetrypipenvsetuptoolspyproject.tomlRuff です。

パッケージングツール

  • pip および setuptools:

  • pip は、Python パッケージをインストールおよび管理するためのコア ツールです。 setuptools と組み合わせると、プロジェクトをパッケージ化するためのデフォルトになります。

  • シンプルなワークフローに最適ですが、プロジェクトの分離などの最新の機能がありません。

  • poetry:

  • 依存関係の管理、パッケージ化、プロジェクトのセットアップのためのオールインワン ツール。 仮想環境を簡素化し、「pyproject.toml」ファイルを通じて依存関係を処理します。

  • 依存関係を管理し、単一のツールでパッケージ化するための合理化されたワークフローを必要とする人に強くお勧めします。

  • rye:

  • Python ツール エコシステムの新星。これは、依存関係のロックと仮想環境の処理をサポートする、フル機能のパッケージ管理を提供します。環境とパッケージングの両方を簡素化することに重点を置いた新しいツールです。プロジェクトの初期化から PyPI での公開まで、ほとんどのタスクを自動化します。

  • Rye は、開発ライフサイクル全体の 簡素化 に重点を置いている点で際立っています。

  • flit:

  • シンプルなプロジェクト向けの Poetry に代わるミニマリストの代替案。これにより、パッケージを PyPI に簡単に公開できるようになりますが、Poetry の完全な機能セットはありません。これは、複雑な依存関係の解決が必要ない小規模なプロジェクトに特に最適です。また、pyproject.toml に依存しているため、軽量の開発ワークフローに適したオプションになります。

環境管理

仮想環境を管理するには、次の点を考慮してください。

  • hatch:
  • この最新のパッケージング ツールは、スピードと柔軟性に重点を置いています。プロジェクトのバージョン管理をサポートし、環境管理を強化します。
  • 環境、テスト、パッケージ化をさらに複数の環境にわたり制御する必要があるプロジェクトに適しています。
  • Virtualenv: 従来の手動による仮想環境の作成。
  • Poetry: (Python のみのプロジェクトの場合)、環境管理、依存関係の解決、および公開を合理化します。パッケージ構成を一元化する pyproject.toml ファイルを作成します。
  • Pipenv: (仮想環境 + 依存関係管理用)、virtualenv と Pip を組み合わせた包括的なツール。パッケージの一貫性のために PipfilePipfile.lock を処理することでセキュリティを強調します。ただし、場合によっては遅くなる場合があります。
  • PDM: pyproject.toml を利用する最新のツールで、新しい Python パッケージ標準とうまく統合されています。高速かつ柔軟で、Poetry のよりシンプルな代替手段を提供します。
  • Conda: (科学計算および言語間環境用)、科学技術計算や、C ライブラリなどの Python 以外の依存関係の管理に最適です。

リンティング(校正)とフォーマット

  • Ruff: 高速かつ包括的で、複数のリンターとフォーマッタを 1 つのツールに統合し、ワークフローを簡素化します。最新の CI/CD パイプラインおよび Python lint ルールとうまく統合されています。
  • Black: コードをフォーマットするための Python の標準。
  • isort: PEP8 に従ってインポートをソートします。
  • Flake8: スタイルとコードの品質の問題をチェックする従来の Python リンター。

Pyproject.toml

PEP 518 で導入されたこのファイルは、Python プロジェクトのユニバーサル構成になりました。 Poetry、PDM、Flit などのツールはこれを完全にサポートしていますが、setuptools などの古いツールはそれを統合しています。ビルド システム、依存関係、パッケージのメタデータを定義するため、最新のパッケージ化ワークフローに不可欠なものとなります。

各ツールにはそれぞれ長所があるため、選択はプロジェクトの複雑さと柔軟性のニーズによって異なります。

ワークフロー推奨事項

最新のスムーズな Python 開発エクスペリエンスを実現するには:

  1. プロジェクトの初期化: プロジェクトの作成 (pyproject.toml 管理) には Poetry または Rye を使用します。
  2. 環境管理: これらのツールを通じて仮想環境を自動的に作成します。
  3. 依存関係管理: ロック ファイル (Pipfile.lock または poetry.lock) を使用して依存関係を固定します。
  4. リンティングとフォーマット: 効率的なコード品質チェックのために Ruff を構成します。
  5. テスト: 包括的なテスト範囲を得るには pytest を使用します。
  6. ビルドと公開: Poetry または Rye を使用して、プロジェクトをパッケージ化し、PyPI に公開します。

パッケージングの実践

ホスティング

配布向け設定

Reference

  1. An unbiased evaluation of environment management and packaging tools