ライブラリ?パッケージ?モジュール?ここらへんのややこしいことを初心者なりにまとめてみた
はじめに
- ライブラリ、パッケージ、モジュールについてまとめます
- インポートの方法についてscikit-learnを例に解説と考察を行います
※プログラミング関係の内容を他にも投稿していますので、よろしければこちらの一覧から他の投稿も見て頂けますと幸いです。
環境
- conda 4.8.3
- python 3.8.3
用語の整理
ライブラリ>パッケージ>モジュール>クラス、関数という関係です。
※ただし、ライブラリには正確な定義はない
「ライブラリ」
ライブラリとは、いくつかのパッケージをまとめて一つのライブラリとしてインストールできるようにしたものです。具体的な定義はなく、モジュールのことをライブラリと呼んだり、パッケージのことをライブラリと呼んだりと様々な使用法があるようです。
ライブラリには以下の2種類があります。
・標準ライブラリ
…Pythonにあらかじめ標準で用意されているライブラリ
そのまま何もせずに使える「組み込み関数(例:print)」と
事前にimport文で読み込みが必要なもの(例:csv)
標準ライブラリは次のサイトで確認可能
https://docs.python.org/ja/3/library/
・外部ライブラリ
…インストールで追加して、import文で呼び出して仕様(例:pckle)
外部ライブラリは以下のPyPI(パイパイ)で検索可能
https://pypi.org/
「パッケージ」
モジュールをいくつか集めてまとめたものがパッケージです。
「モジュール」
モジュールとは、Pythonのファイル(.py)の事です。モジュールには関数やクラスが定義されています。
「クラス」
クラスの中にメソッドが定義されており、クラスを束ねたものがモジュール
(関数とクラスの違いはまだあまり理解できていないので、今後勉強します…)
インポートの方法
以下のいずれかの方法でインポートが可能です。
import パッケージ(モジュール名)
from パッケージ(モジュール名) import オブジェクト名(クラス名, 関数名)
import パッケージ.モジュール名
from パッケージ.モジュール名 import オブジェクト名(クラス名, 関数名)
例えば、sklearnの線形回帰を実行する際は以下のインポート文を書きます。
from sklearn.linear_model import LinearRegression
別名をつけてインポートする際には以下のいずれかのようにasを使います。
import パッケージ(モジュール名) as 別名
from パッケージ(モジュール名) import オブジェクト名(クラス名, 関数名) as 別名 ※オブジェクト自体に別名がつく
例として、よく目にするnumpyのインポート文を書いてみます。
import numpy as np
sklearnのLinearRegressionのインポートを考えてみる
上で述べたように、次のインポート文でインポートが可能です。
from sklearn.linear_model import LinearRegression
また、次の2つでもエラーなく実行されます。
import sklearn.linear_model
from sklearn import linear_model
しかし、次のインポート文ではエラーになります。
import sklaern
ModuleNotFoundError Traceback (most recent call last)
<ipython-input-1-c019031db95a> in <module>
----> 1 import sklaern
ModuleNotFoundError: No module named 'sklaern'
こちらでも上記のインポート文ではエラーが起こると記載があります。sklaernというパッケージ自体はインポートできないのかな?と推測しますが、イマイチ腑に落ちていません…以下の実行結果からは、"sklearn"も"sklearn.linear_model"もどちらも同じモジュールであると読み取れます。(詳しい方、教えてください。)
import sklearn.linear_model
sklearn
<module 'sklearn' from 'C:\\Users\\ユーザー名\\anaconda3\\lib\\site-packages\\sklearn\\__init__.py'>
import sklearn.linear_model
sklearn.linear_model
<module 'sklearn.linear_model' from 'C:\\Users\\ユーザー名\\anaconda3\\lib\\site-packages\\sklearn\\linear_model\\__init__.py'>
まとめ
図で表すと以下のようになると理解しました。
参考
Author And Source
この問題について(ライブラリ?パッケージ?モジュール?ここらへんのややこしいことを初心者なりにまとめてみた), 我々は、より多くの情報をここで見つけました https://qiita.com/oki_kosuke/items/782443893201a99f365d著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .