本稿では複数のモジュールを組織的に取り扱うための機構であるパッケージについて見ていこう。
前回はPythonのモジュールの基本を取り上げた。モジュールはPythonコードの再利用性を高める仕組みだが、プロジェクトが大規模になってくると、より高レベルな再利用機構が必要になる。本稿では、複数のモジュールを組織化して取り扱うために使えるPythonのパッケージについて見ていこう。
以下ではPython Tools for Visual Studio(以下、PTVS)を使用して、Visual Studio(以下、VS)でパッケージ/モジュールを作成しながら、Pythonにおけるパッケージの基礎知識を紹介していく(VS Codeとコマンドプロンプトなど、別の構成でも本稿の内容は追えるはずだ)。また、実際に使用しているPythonのバージョンは64bit版のPython 3.5.2となっている。
前回も述べたように、Pythonのモジュールとは単独のファイルに記述されたPythonのプログラム群(関数やクラス、変数など)のことだ。モジュールに記述されたクラスや関数、変数などは他のPythonモジュール(Pythonスクリプト)で「インポート」して利用できる。シンプルなレベルでコードの再利用を可能にするのがモジュールである。
これに対して、パッケージは複数のモジュールで構成される、より大規模な再利用可能コード群だといえる。Pythonでは多くの場合、何らかのディレクトリ以下に含まれるサブディレクトリ(ある場合)およびモジュールによってパッケージが構成される。
では、PTVSを使って、実際にパッケージを作成してみよう。なお、以下では新規に「package_sample」という名前のPythonプロジェクトを作成した。
PTVSではパッケージの作成も簡単に行える。ソリューションエクスプローラーでプロジェクトを右クリックして、コンテキストメニューから[追加]−[新しい項目]を選択したら、[新しい項目の追加]ダイアログで[Python Package]を選択するだけだ。ここではパッケージ名として「mypackage」を指定している。
これにより、プロジェクトにパッケージ名と同じ名前のディレクトリが追加され、その下に「__init__.py」ファイルが作成される。なお、ここではPTVSが提供するGUIを利用してパッケージを作成したが、その実体は下の画像のようにディレクトリと__init__.pyファイルなので、コマンドプロンプトなどから手作業で同じことをしても構わない。
通常のパッケージでは、パッケージを構成するディレクトリには上で見た__init__.pyファイルが必要となる。特に設定が必要なければ、このファイルの内容は空でもよいが、パッケージの読み込み時に何らかの初期化処理を行うようなコードを記述することもできる。これについては後で見るとして、今作成したmypackageパッケージにモジュール(Pythonのコードを含むファイル)を追加しておこう。PTVSでモジュールを追加するには先と同様な手順を行い、[新しい項目の追加]ダイアログで[Empty Python File]を選択すればよい(画像は省略)。ここでは「mymodule1.py」ファイルを追加する。追加のプロジェクト構成は次のようになる。
モジュールを追加したら、「mymodule1.py」ファイルにちょっとしたコードを記述しておく。ここでは次のコードを書いてみる。
print("hello from mypackage.mymodule1")
def foo():
print("hello from foo on mypackage.mymodule1")
簡単なコードだが、パッケージの振る舞いを調べるにはこれで十分だ。次ページでは自作したパッケージを実際にインポートしてみよう。
Copyright© Digital Advantage Corp. All Rights Reserved.