外部モジュールの使い方#

モジュールとは?#

モジュールとは.pyファイルのことです.ここでは自分や他の人が作った.pyファイルを読み込んで,自分のプログラムの中で利用する方法を学びます.

モジュールとパッケージ,ライブラリ#

これらはすべて先人たちが書いたコードであり、それをほかの人が利用しやすい形に整えたり、よく使うものを集めたりしたものがモジュール、パッケージ、ライブラリと呼ばれています。

モジュールは実行可能なコードファイル、パッケージはそれのセット、さらにライブラリはパッケージのセットとなっています。
(出典:モジュールやパッケージ、ライブラリの違いとは? python | .LOG https://log.dot-co.co.jp/module-package-lybrary/ )

例えば数学的な関数をたくさん収めた標準モジュールmathを使ってみます.

import math # mathモジュールをそのまま,今扱っているPythonファイルに取り込みます.

import モジュール名をすると,モジュールの中で定義された関数や変数を自分のプログラムの中で使うことができます.例えば:

math.pi # 円周率
3.141592653589793
math.e # ネイピア数
2.718281828459045
math.pow(2,5) # 2**5
32.0
math.sin(10) # sin関数
-0.5440211108893698

他にも様々な関数がmathライブラリには実装されているので,調べて使ってみましょう.

特定の関数,変数,モジュールだけをimportする#

  1. ライブラリの中から,特定のパッケージをimportする

  2. モジュールの中から,特定の関数をimportする

のようなことをするには

from モジュール import 関数

のようにfromとimportを使います.

from random import randint

for i in range(10):
    x = randint(1,5)
    print(x)
1
5
5
1
2
4
4
3
1
1
from random import choice
seq = "あいうえお"

for i in range(10):
    x = choice(seq)
    print(x)
お
い
お
え
う
お
え
あ
い
あ
from random import choice, randint

randomは乱数に関するモジュールです.実際にはファイルが一つだけなので,from random import 関数名で特定の関数を取り出すことができます.これがライブラリならば

from ライブラリ.パッケージ import 関数名

のようになります.

importした名前空間にあだ名をつける#

matplotlibライブラリのpyplotパッケージをimportして,この下にある関数を使いたいとしましょう.毎回matplotlib.pyplotと入力するのは不便なので,以下のようにしてあだ名をつけます.

import matplotlib.pyplot as plt

x_axis = list(range(10))
y_axis = []
for i in range(10):
    y_axis.append(randint(0,10))

plt.plot(x_axis, y_axis) # 折れ線グラフを作る
[<matplotlib.lines.Line2D at 0x11db33c50>]
../_images/6950b639f3e2628983a0f2087d4a0e51121591f4f62117e58516d291d3cc9d97.png

asを使ったあだ名の命名は,importした名前空間ならば何に対しても可能です.

import numpy as np 
import pandas as pd 

importするPythonファイルはどこにある?#

さて,import文は,任意のディレクトリに置いてあるファイルを読み込むための命令です.このpythonモジュールやパッケージなどがおいてあるディレクトリは,pythonの環境変数として定義されています.これを確認するには:

import sys
sys.path
['/Users/mriki/.rye/py/cpython@3.11.8/lib/python311.zip',
 '/Users/mriki/.rye/py/cpython@3.11.8/lib/python3.11',
 '/Users/mriki/.rye/py/cpython@3.11.8/lib/python3.11/lib-dynload',
 '',
 '/Users/mriki/workspace/prpy/.venv/lib/python3.11/site-packages',
 '/Users/mriki/workspace/prpy/src']

Pythonモジュールを探すディレクトリの中には,今操作している.ipynbファイルや.pyファイルと同じディレクトリ(これを カレントディレクトリ と呼びます.)も含まれています.そのため,自分が作ったモジュールも簡単にimportできます.

他のディレクトリについてはいくつかルールがありますが,site-packagesディレクトリは,pythonライブラリをinstallしたりuninstallしたりするためのパッケージ管理コマンドpipを使ってインストールしたPythonパッケージ/ライブラリ/モジュールが自動的に保存されています.

# lsコマンドやos.listdir関数でsite-packagesの中身を確認してみましょう.

pip install#

colabでは必要なパッケージがすでにインストールされていますが,追加でインストールをする場合には以下のコマンドを使います.

# 自分のPCでpythonライブラリのinstall
$ pip install ライブラリ名

# 自分のPCでpythonライブラリのuninstall 
$ pip uninstall ライブラリ名

# colabのcodeセルでpythonライブラリのinstall
!pip install ライブラリ名

# colabのcodeセルでpythonライブラリのuninstall 
!pip uninstall ライブラリ名