【Python】モジュールとパッケージとライブラリの違い
ざっくりモジュールとパッケージとライブラリの関係性について
ライブラリの中にパッケージがあり、パッケージの中にモジュール、モジュールの中にクラスや関数が定義されているといった関係性になります。
こうみると非常にシンプルですが、具体的にどう言ったものを指すのでしょうか?
モジュールとは
Pythonのファイル(.py)のことです。
Import文でsample.pyをインポートすることでsample.pyの中の関数やクラスを使用することがで切るようになります。
このモジュールは他のプラグラムから呼ばれて使われることを前提に書かれているものです。
中身はシンプルにクラスや関数が定義されているファイルだと思ってOKです。
パッケージとは
モジュールを複数集めたものです。
つまり.pyファイルが複数あるフォルダと思っていただいてOKです。
また特徴としては_init_.pyファイルがあるのが特徴です。
基本的には_init_.pyの中身には何も記載されていなくて大丈夫です。
init.pyの役割としては、init.pyがフォルダの中に存在することで、そのフォルダがモジュールの塊であるパッケージということを認識してくれます。ある意味フラグのような役割を担っています。
他にはパッケージ内で使用する変数などを初期化したりすることができます。
パッケージの中のモジュールは互いにインポートしているので複雑な処理や機能をパッケージをインポートすることですぐに使用可能になるのがGoodな点です。
ライブラリとは
ライブラリとは関係図から読み取れるように、複数のパッケージで成り立っているのがライブラリです。
ここで注意が必要なのが、ライブラリには2種類あります。
標準ライブラリと外部ライブラリです。
標準ライブラリとは
pythonをインストールした時点で一緒にインストールされるライブラリです。
例えばprint関数などがそれです。
普段なんとなく利用しているものは大体標準ライブラリです。
外部ライブラリとは
標準ライブライ以外のライブラリが外部ライブラリです。
例えば以下のようなものがそうです。Pythonが人気な言語になってきたのは以下のような非常に便利な外部ライブラリが豊富になってきたという経緯もあります。
dateutil.
pandas.
Numpy.
matplotlib.
sklearn.
Tensorflow.
OpenCV.
OpenPyXL.
インポートの仕方
例えば、sklearnというライブラリをインポートする際には
import sklearn
これだけでscikit-learnさまざまなモジュールやクラスにアクセスすることができます
一般的には、必要な具体的な機能に応じて、sklearn ライブラリ内の特定のモジュールやクラスをインポートすることもできます。たとえば、linear_model モジュール内の LinearRegression クラスを使用したい場合は、以下のようにインポートします。
ライブラリを丸ごとインポートしてしまうとその分メモリを消費してしまうので、もし使用したい機能が決まっているならライブラリの中のどのパッケージのどのモジュールを使用したいのかを指定してあげることで効率よくリソースを使用することが可能です
from sklearn.linear_model import LinearRegression
Discussion