Python パッケージング
Poetry に関する詳細情報が必要な場合は、次の記事を読むことができます。
- Poetry と VSCode を使った Python プロジェクト。パート 1
- Poetry と VSCode を使った Python プロジェクト。パート 2
- Poetry と VSCode を使った Python プロジェクト。パート 3
超高速 Python パッケージマネージャーである UV の包括的なガイドについては、UV: 超高速 Python パッケージマネージャーをお読みください。
はじめに
Python パッケージングとは、Python プロジェクトを配布およびインストールできるように準備するプロセスです。主なアプローチは 2 つあります。従来のsetup.pyメソッドと、PEP-517、PEP-518、および PEP-660 で定義されている最新のpyproject.tomlアプローチです。
プロジェクト構造を管理するために不可欠なファイルおよびディレクトリパスの処理に関する包括的なガイドについては、ファイルとディレクトリのパスページを参照してください。
従来の アプローチ:setup.py
setup.pyファイルは、従来の Python プロジェクトの中心です。プロジェクトに関するすべてのメタデータを記述します。プロジェクトにリッチなメタデータセットを与えるために追加できるフィールドはかなりありますが、必須フィールドは名前、バージョン、パッケージの 3 つだけです。名前フィールドは、パッケージを Python Package Index (PyPI) で公開したい場合、一意である必要があります。バージョンフィールドは、プロジェクトの異なるリリースを追跡します。パッケージのフィールドは、プロジェクト内のどこに Python ソースコードを配置したかを記述します。
これにより、Python パッケージを簡単にインストールできます。多くの場合、次のように記述するだけで十分です。
python setup.py install
そしてモジュールが自己インストールされます。
例:setup.py
最初の setup.py にはライセンスに関する情報も含まれ、long_descriptionフィールドに README.txt ファイルを再利用します。これは次のように表示されます。
# setup.py: define package metadata for distribution
from distutils.core import setup
setup(
name='pythonCheatsheet', # Package name (must be unique on PyPI)
version='0.1', # Version number
packages=['pipenv',], # List of packages to include
license='MIT', # License type
long_description=open('README.txt').read(), # Read description from file
)
ログインしてこのクイズに回答し、学習の進捗を追跡できます
setup.pyファイルにおける 3 つの必須フィールドは何ですか?最新の アプローチ:pyproject.toml
pyproject.tomlファイルは、Python プロジェクト構成の最新の標準です(PEP-517、PEP-518、PEP-660)。ビルドシステムの要件とプロジェクトのメタデータを単一の宣言的なファイル形式で指定するための統一された方法を提供します。
pyproject.toml の利点
- 宣言的: すべてのプロジェクトメタデータが一箇所に
- ビルドシステムに依存しない: setuptools、poetry、flit、その他のビルドバックエンドと連携
- コード実行なし: setup.py よりも安全で予測可能
- 標準化: より良いツールサポートのために PEP 標準に従う
例:pyproject.toml
setuptools を使用した基本的なpyproject.tomlの例を次に示します。
[build-system]
requires = ["setuptools>=61.0", "wheel"]
build-backend = "setuptools.build_meta"
[project]
name = "pythonCheatsheet"
version = "0.1"
description = "A Python cheatsheet package"
readme = "README.txt"
requires-python = ">=3.8"
license = {text = "MIT"}
authors = [
{name = "Your Name", email = "your.email@example.com"}
]
classifiers = [
"Programming Language :: Python :: 3",
"License :: OSI Approved :: MIT License",
]
[project.optional-dependencies]
dev = [
"pytest>=7.0",
"black>=22.0",
]
pyproject.toml からのインストール
pyproject.tomlを使用すると、pip を使用してパッケージをインストールできます。
pip install .
または編集可能モードで:
pip install -e .
ログインしてこのクイズに回答し、学習の進捗を追跡できます
pyproject.tomlがsetup.pyよりも優れている主な利点は何ですか?適切なアプローチの選択
setup.pyを使用する: レガシープロジェクトを扱っている場合、または細かい制御が必要な場合pyproject.tomlを使用する: 新しいプロジェクトの場合(推奨)、最新の標準であり、より良いツールサポートを提供するため
詳細については、公式ドキュメントをご覧ください。