検索
特集

Pythonのパッケージの基本も押さえる特集:Visual Studioで始めるPythonプログラミング(1/4 ページ)

本稿では複数のモジュールを組織的に取り扱うための機構であるパッケージについて見ていこう。

Share
Tweet
LINE
Hatena
「特集:Visual Studioで始めるPythonプログラミング」のインデックス

連載目次

 前回は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プロジェクトを作成した。

新規に「package_sample」プロジェクトを作成
新規に「package_sample」プロジェクトを作成

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


テスト用のコード(mypackage\mymodule1.pyファイル)

 簡単なコードだが、パッケージの振る舞いを調べるにはこれで十分だ。次ページでは自作したパッケージを実際にインポートしてみよう。

Copyright© Digital Advantage Corp. All Rights Reserved.

       | 次のページへ
ページトップに戻る