#[Python]08章-02 パッケージのインポート
前節では、モジュールというファイルをインポートして関数を呼び出していました。そこでは、単体のモジュールをインポートしていましたが、今後いろいろなプログラムを作成していくと、モジュールが増えていき、最終的には管理が煩雑となってしまいます。
この節では、モジュールの管理が煩雑にならないように、パッケージ(package:小包)という単位にまとめることで、管理を容易にすることができます。これによりモジュールをまとめることもできますが、パッケージ内にモジュールを階層化して管理をすることもできます。この節では、そのようなパッケージの扱いについて触れていきます。
イメージとしては、モジュールがファイル、それを管理するフォルダがパッケージです。
##パッケージの作成
パッケージを作成してみます。まず、以下の手順で空のパッケージを作成してください。
([pythonフォルダを右クリック]→[New]→[Python Package]の順で選択)
すると、以下のようにパッケージができます。空のpkgというパッケージを作成したはずなのに、__init__.pyという中身が空のファイルが入っています。これがあると、pkgがパッケージであることを示します。
では、作成したpkg内に、モジュールを作成していきましょう。今回は2つ作成していきます。
pkgフォルダを右クリックし、sampmodAとsampmodBというモジュールファイルを作成してください。
それぞれのモジュールに以下のコードを記載してください。
def calc_plus(x, y):
print('sampmodAモジュール内のcalc_plus関数が呼び出されました。')
return x + y
def calc_mult(x, y):
print('sampmodBモジュール内のcalc_mult関数が呼び出されました。')
return x * y
##パッケージ内にあるモジュールのインポート
次にパッケージ内にあるモジュールをインポートすることを考えます。一般的には以下のように指定します。(いくつか方法があります)
【方法1】
import パッケージ名.モジュール名
この方法だと、関数を呼び出す際に、**「パッケージ名.モジュール名.関数名」**という指定となり、毎回、パッケージ名とモジュール名を記載するため、コードが煩雑になります。
【方法2】
from パッケージ名.モジュール名 import 関数名(または変数名)
この方法は、パッケージ内のモジュールから、ある関数だけ(変数だけ)を読み込むことができます。これにより、別ファイルから実行する際にも、関数名を指定するだけでパッケージ内のモジュールにある関数を呼び出せます。
次にパッケージにある上記2つのモジュールを実際にインポートします。今回は**【方法2】**のやり方でインポートをします。
Python Consoleから以下のコードを入力してください。
>>> from pkg.sampmodA import calc_plus
>>> from pkg.sampmodB import calc_mult
>>> calc_plus(10, 20)
sampmodAモジュール内のcalc_plus関数が呼び出されました。
30
>>> calc_mult(10, 20)
sampmodBモジュール内のcalc_mult関数が呼び出されました。
200
これにより、パッケージ内のモジュールのインポートができたことを確認できたかと思います。
##最後に
パッケージのインポートについて触れましたが、これについても今後外部モジュール(ライブラリ)をパッケージから読み込む際に必ず必要なものとなります。
今回は自分でパッケージを作成し、さらにモジュールを自分で作成してそれをインポートについてして実行させましたが、自作するということはほとんどありません。今後は外部にあるパッケージ内のモジュールをインポートすることがほとんどだと思います。
この節で、パッケージ内のモジュールのインポートの仕方についてはしっかり身に着けてください。
###【目次リンク】へ戻る