Python パッケージング

PythonBeginner
オンラインで実践に進む

はじめに

この実験(Lab)では、従来の Distutils ライブラリを使用して Python プロジェクトをパッケージングするための基本的なコンポーネントである setup.py スクリプトを紹介します。その目的、構造、および Python モジュールをインストール可能にするためにそれを使用する方法について学習します。この実験の終わりまでに、基本的な setup.py ファイルを作成し、それを使用してシンプルな Python パッケージをインストールできるようになります。

はじめに

このステップでは、Distutils を使用したモジュールのビルド、配布、インストールのすべての活動の中心としての setup.py スクリプトの役割を理解します。

セットアップスクリプトは、Distutils を使用したモジュールのビルド、配布、インストールの核となります。その主な目的は、モジュールに関する配布情報を Distutils に記述し、モジュールに対して実行されるさまざまなコマンドが正しく動作するようにすることです。

setup.py ファイルは Python プロジェクトの心臓部です。これはプロジェクトに関するすべてのメタデータを記述します。リッチなメタデータを提供するために追加できるフィールドは多数ありますが、必須なのは次の 3 つだけです。

  • name: パッケージの名前。Python Package Index (PyPI) でパッケージを公開したい場合、これは一意である必要があります。
  • version: パッケージの現在のバージョン。これはユーザーが異なるリリースを区別するのに役立ちます。
  • packages: 配布に含めるすべての Python パッケージのリスト。

setup.py ファイルがあれば、Python パッケージを環境に簡単にインストールできます。推奨される方法は、カレントディレクトリからパッケージをインストールするために pip を使用することです。setup.py ファイルと同じディレクトリからターミナルで次のコマンドを実行します。

pip install .

このコマンドは、モジュールのビルドとインストールのプロセスを処理し、他の Python スクリプトでインポートして使用できるようにします。次のステップでは、setup.py ファイルを作成し、このコマンドを実行します。

例

このステップでは、setup.py スクリプトの基本的な例を確認し、プロジェクト用に一つ作成します。この例には、必須フィールドに加え、ライセンスや README.txt ファイルから読み込まれる長い説明などのオプション情報が含まれます。

まず、用意されているプロジェクトディレクトリに移動します。IDE の左側にあるファイルエクスプローラーを使用して、pythonCheatsheet ディレクトリを確認してください。その中には、pipenv サブディレクトリと README.txt ファイルがあります。

次に、~/project/pythonCheatsheet ディレクトリ内に setup.py という名前の新しいファイルを作成します。ファイルエクスプローラーで pythonCheatsheet フォルダをクリックし、次に「新規ファイル」アイコンをクリックして、ファイル名を setup.py とします。

以下のコードを新しく作成した setup.py ファイルにコピー&ペーストしてください。

## 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
)

このスクリプトを詳しく見てみましょう。

  • from distutils.core import setup: この行は、スクリプトの主要なエントリーポイントである setup 関数をインポートします。
  • name='pythonCheatsheet': パッケージの名前を定義します。
  • version='0.1': 初期バージョンを設定します。
  • packages=['pipenv',]: 配布に含めるパッケージが pipenv ディレクトリ内にあることを Distutils に伝えます。
  • license='MIT': パッケージが配布されるライセンスを指定します。
  • long_description=open('README.txt').read(): パッケージの詳細な説明を提供するために、README.txt の内容を読み込みます。

setup.py ファイルの準備ができたので、IDE 下部のターミナルパネルにある + アイコンをクリックしてターミナルを開きます。カレントディレクトリが ~/project/pythonCheatsheet であることを確認してください。cd ~/project/pythonCheatsheet を実行することで移動できます。

インストールコマンドを実行します。

pip install .

pip がパッケージをビルドしてインストールするにつれて、ターミナルに出力が表示されます。出力は概ね以下のようになり、パッケージがインストールされたという確認で終了します。

Processing /home/labex/project/pythonCheatsheet
Building wheels for collected packages: pythonCheatsheet
  Building wheel for pythonCheatsheet (setup.py) ... done
  Created wheel for pythonCheatsheet: pythonCheatsheet-0.1-py3-none-any.whl
  Stored in directory: /tmp/pip-wheel-xxxxx
Successfully built pythonCheatsheet
Installing collected packages: pythonCheatsheet
Successfully installed pythonCheatsheet-0.1

インストールを確認するには、pip を使用してインストールされているパッケージをリスト表示し、新しいパッケージをフィルタリングできます。

pip list | grep pythonCheatsheet

バージョンと共にパッケージがリスト表示されるはずです。

pythonCheatsheet  0.1

おめでとうございます!setup.py ファイルを作成し、Python パッケージを正常にインストールできました。

まとめ

この実験(Lab)では、Python プロジェクトの配布における setup.py スクリプトの基本的な役割について、Distutils を使用して学習しました。パッケージに必須のメタデータフィールドである name、version、packages について確認しました。最後に、実践的な setup.py ファイルを作成し、license や long_description のような追加のメタデータを含め、pip install . コマンドを使用してパッケージをローカル環境に正常にインストールしました。これで、独自の Python プロジェクトを配布可能にするための基礎知識が得られました。