(1/2)Pythonには複数のモジュールを束ねて扱うための「パッケージ」という仕組みがある。その作り方、インポート方法などについて見ていこう。前回と前々回は、モジュールについて見た。今回は、モジュールを束ねて1つの単位として扱えるようにする仕組みである「パッケージ」について見ていこう。今回の目次パッケージとはパッケージを作成するパッケージのインポート__init__.pyファイルと__all__変数とパッケージ内インポート相対インポートパッケージとはモジュールとは基本的には「Pythonのコード(再利用可能な関数の定義など)を含んだテキストファイル」のことだ。「パッケージ」とは、複数のモジュールを束ねたものだと考えられる。普段、コンピュータを使っていると、「ファイル」とそれを階層的に管理するための「フォルダ」を頻繁に目にするが、モジュールはファイルに対応し、パッケージはフォルダに対応するものと考えると分かりやすいだろう*1。モジュールとパッケージ実際、Pythonでは多くの場合、パッケージはモジュールをフォルダに格納する形を取る。Pythonのドキュメント「インポートシステム」には「パッケージやモジュールはファイルシステムから生まれる必要はないので、この比喩を額面通りに受け取ってはいけません」とあることも覚えておこう。通常のファイルとフォルダがそうであるように、モジュールとパッケージは2層以上の階層構造を形成することもある。そのようにすることで、ライブラリが大規模になったときに、ライブラリを構成するモジュール(ファイル)群を整理できるようになる。階層構造を使って整理されたパッケージまた、「mypkgパッケージのmymoduleモジュール」は「mypkg.mymodule」のように、ドット「.」を使用してパッケージ名とモジュール名をつないで表記する。階層が深くなり、「mypkgパッケージのmysubmodサブモジュールのmodule1モジュール」であれば「mypkg.mysubmod.module1」のように表記する。それらの属性はもちろんドットでつないで表記する。以下では、1つのフォルダと2つのモジュールで構成されるシンプルなパッケージを作ってみよう。パッケージを作成するここでは以下の2つのモジュールで構成される「mypkg」パッケージを作成してみよう。mymathモジュール:前回に作成したfact関数/fizzbuzz関数/fib関数/PI変数を定義する(前回は「myutil」というモジュール名だったもの)。Pythonには組み込みのmathモジュールがあるのでここでは「mymath」という名前にしてあるgreetモジュール:hello関数だけを定義するこれらのファイルを「mypkg」フォルダに格納すれば、それだけでmypkgパッケージとなるわけではない。Pythonでは、基本的にはモジュールを含んだフォルダに以下のファイルを配置することで、それがモジュールとして扱われるようになる。__init__.pyファイルシンプルなパッケージであれば、__init__.pyファイルがありさえすればよい。パッケージのインポート時に何らかの初期化処理が必要になるのであれば、このファイルにそれらの処理を記述する。よって、mypkgパッケージの構造は次のようになる。Notebook上のPython環境にパッケージを作成していこう。NotebookのPython環境(Webブラウザの中)だけでファイルを作成/編集してみよう(こちらの方が簡単だ)。その前に3つのファイルを保存して、パッケージの入れ物となるフォルダを作成する必要がある。これには[File]メニューから[Open]を選択して、次のページを表示する。Python環境のファイルブラウザこのページの右上に[New]ボタンがある。これをクリックすると、ドロップダウンが開くので、そこから[Folder]という項目を選択する。Folder]というフォルダがファイル一覧に表示される。新規に作成されたフォルダ(赤枠内)次にフォルダ名を変更する。Folder]の左に表示されているチェックボックスをチェックして、その上にある[Rename]ボタンをクリックする。フォルダ名を変更するすると、ダイアログが表示されるので、「mypkg」と入力して、[Rename]ボタンをクリックする。新しいフォルダ名を入力するこれにより、[mypkg]というフォルダがファイル一覧に表示される。[mypkg]フォルダができた今度はそのファイル名をクリックして、フォルダを移動しよう。ファイル名のリンクをクリックして、フォルダを移動したところこの後は、このフォルダ内に3つのファイルを作成していく。ファイルの編集フォルダの作成と同様に、ファイルの作成には、ページの右上にある[New]ボタンを利用する。File]を選択してみよう。テキストファイルの新規作成これにより、新たに次のようなページが表示される。テキストファイルの編集画面ここにPythonのコードを入力して、保存すればよいのだが、その前にファイル名を変更しておこう。これには、[File]メニューから[Rename]を選択する。ファイル名の変更これによりファイル名を変更するダイアログが表示されるので、まずは「mymath.py」と入力して、[OK]ボタンをクリックしよう。新しいファイル名を入力する後はPythonのコードを入力するだけだ。mymathモジュールについては、既に述べた通り、前回のmyutilモジュールと同じコードを流用しよう。実際のコードは以下の通りだ。3.14159mymathモジュールのコード(mymath.pyファイル)コードを入力したら、[File]メニューの[Save]を選択する。mymathモジュールのコードを記入したところこれでmymathモジュールの作成と編集は完了だ。次に同様の手順で、greetモジュール(greet.py)を作成する。コードは以下の通りだ。str(whom)greetモジュールのコード(greet.pyファイル)こちらには上に示したhello関数を1つだけ定義しておこう。greet.pyファイルを作成して、コードを入力したところ最後に同じ手順で「__init__.py」ファイルを作成しておく。これについては、今のところはファイルを新規作成して、名前を「__init__.py」に変更しておくだけでよい。__init__.pyファイルを作成したところ。中身は空でよいこれでパッケージの作成は完了だ。次に、このパッケージをインポートしてみよう。メールマガジンをご購読ください。申し込みページへITmediaはアイティメディア株式会社の登録商標です。