今回はPythonでパッケージを使用するために必要なimportの方法について、解説していきたいと思います。パッケージは、Pythonのコードが書かれたファイルが複数ある場合や、他の人が作ったコードを再利用するときによく使われます。
パッケージの作り方について教えてほしい
パッケージをimportして使える状態にしたい
そのような方に向けて、この記事では以下の内容について解説していきます!
- 【基礎】importとは
- 【基礎】モジュール、ライブラリ、パッケージとは
- 【実践】パッケージの作り方
- 【実践】パッケージをimportする方法
importはパッケージやモジュールを呼び出して使用するときによく使いますので、使い方についてはよく理解しておきましょう。
※ この記事のコードはPython 3.7, Ubuntu 18.04で動作確認しました。
この記事の目次
まずはimportについて理解しよう!
importとは
importとは、Pythonで書かれたコードを再利用するためにはに使用します。importはソースファイルの先頭に以下のように記述します。
import パッケージ
これからimport出来るファイルの作成と、importのさまざまな方法について見ていきましょう!
モジュール、ライブラリ、パッケージとは
import出来るファイルには、
- モジュール
- ライブラリ
- パッケージ
など、さまざまな呼ばれ方をするものがあります。モジュールとは、Pythonのファイル(.py)の事です。Pythonである程度の長いプログラムを書く場合などは、コマンドラインではなく.pyファイルに実行したい内容を保存します。
そしてその保存された.pyファイルは、他のPythonのプログラムからimportで呼び出して使うことも出来ます。これをモジュールと呼びます。また、複数のモジュールで構成されたものはパッケージと呼ばれます。
科学技術計算でよく使われるnumpyなどはすべてパッケージという形で配布されています。モジュールやパッケージは、使うとメンテナンス性が高くなり、管理がとても楽になります。
また、自分以外の開発者に同じ機能を使ってもらう場合は、機能の仕組みを知らなくても簡単に使ってもらうことが出来ます。ちなみにPythonではライブラリという言葉の定義は(私の知る限り)曖昧で、パッケージに近いものだと考えてOKだと思われます。
【まとめ】
- モジュールとはPythonのソースファイルのこと
- パッケージは複数のモジュールで構成されたもの
- ライブラリはそれらを組み合わせた意味として使うこともある
パッケージの作り方
ここからは、実際に簡単なパッケージを作ってみましょう。今回はmod1.pyとmod2.pyというファイルを作り、これらを一つのパッケージとして作ってみましょう。mod1.pyはこのようになっています。
mod1.py
def mod1func(): print("This is mod1.")
続いてmod2.pyはこのようになっています。
mod2.py
def mod2func(): print("This is mod2.")
これらをmodsampleという名前の一つのフォルダにまとめましょう。今の構成はこのようになっています。
modsample ├── mod1.py └── mod2.py 0 directories, 2 files
モジュールをまとめることはできましたね。
しかし、これではまだパッケージとして認識されません。Pythonにパッケージだということを伝えるためには「__init__.py」というファイルを作らなければなりません。この__init__.pyの中身は空でも問題ありません。
しかし、この__init__.pyにimportしておきたいファイルを相対パスを使って書くことで、複数のファイルを一度にimportさせることも出来ます。
from . import mod1 from . import mod2
と書くと、ひとつ下にある複数のモジュールを扱うことが出来るようになります。__init__.pyを追加した今の構成はこのようになっています。
modsample ├── __init__.py ├── mod1.py └── mod2.py 0 directories, 3 files
これでパッケージは完成しました。この後はいろいろな方法でこのパッケージを呼び出してみましょう。