Data Science|Basics

マスターしよう!Pythonでimportを使う方法について徹底解説!

Pythonを学習し始めたばかりの人で「import」につまずいている人もいることでしょう。

そこで今回は

  • importの特徴や役割
  • モジュール・パッケージ・ライブラリについて
  • importの基本的な使い方から応用まで

について詳しく説明します。それでは見ていきましょう。

importとは

「import」とは、Pythonでモジュールなどを利用するために使用するもので、ソースファイルの先頭に次のように記述します。

1.  import パッケージ

これからimportできるファイルの作成やimportのさまざまな方法について説明していきます。

モジュール・パッケージ・ライブラリ

importできるファイルには「モジュール」「パッケージ」「ライブラリ」など、さまざまな呼ばれ方をするものがあります。

「モジュール」とは関数やクラスなどをまとめて記述したファイルのことです。モジュールが複数集まって構成されているものを「パッケージ」と呼びます。
Pythonである程度長いプログラムを記述する場合には、コマンドラインではなく、「.pyファイル」に記述してモジュールとして保存することになります。

ちなみにPythonでは「ライブラリ」という言葉は厳格に定義されていませんが、モジュールやパッケージのことをライブラリとも呼ぶことがあります。

importの基本的な使い方

ここからは、実際にコードを使用してimportの基本的な使い方を説明していきます。

Pythonでは、importの後に取り込みたいファイルの拡張子を除いた名前を入力するだけで、簡単にモジュールなどをインポートすることができます。

試しにシステムに関する処理をまとめた「sys」をインポートしてみましょう。

1.  #! /usr/bin/env python
2.
3.  import sys
4.
5.  print (sys . version)

「sys . version」は、Pythonのバージョンを取得するメソッドで、printを実行すると現在使用しているPythonのバージョンが表示されます。

複数のPythonが入っている場合は異なるかもしれませんが、コマンドラインで「$ Python -V」を実行したときと同じバージョンになるはずです。

このように、importを行うことでさまざまな機能を扱うことができるようになりますよ。

複数モジュールのインポート

import文のあとに複数のモジュールを「 , 」で区切って記述することができます。

1. import モジュール1 , モジュール2

しかし、Pythonのコーティングスタイルガイドでは、この記述方法は推奨されていません。

推奨されているのは、次のように1つずつインポートする方法です。

1.  import モジュール1
2.  import モジュール2

また、fromを使用してオブジェクトをインポートする場合にもカンマで区切って記述することができますよ。

1.  from spam import foo , bar

オブジェクトを指定してインポート

あるモジュールから単独のオブジェクトをインポートする場合、「from モジュール名 import オブジェクト名」でインポートすることが可能です。

このときインポートされるのは指定されたオブジェクトのみで、インポートしたオブジェクトは「オブジェクト名」で直接使用することができますよ。

1. from math import e   # 自然対数の底
2.
3. print ( e )
4. # 実行結果
5. 2.718281828459045

このとき、インポートしなかったオブジェクトを使用するとエラーとなってしまうため注意してくださいね。

新しく名前をつけてインポート

インポートするときに名前を変更してインポートすることもできます。

1. from math import sqrt as rt
2. print(rt(2))
3. # 実行結果
4. 1.4142135623730951

ここではmathパッケージ内のsqrtモジュールを「rt」という名前でインポートしています。このとき、元の名前「sqrt」を呼び出すとエラーが返ってくるので注意してください。

名前を付けてのインポートはnumpyなどのパッケージを使用する際によく使用するので覚えておきましょう。

パッケージの作成・インポート

オブジェクト・モジュールをインポートする場合には構成や「_init_ . py」の記述によってインポート方法に注意する必要があります。

基本的に、どのようにインポートすればいいのかはドキュメントに記載されているので、わざわざ「_init_.py」を読む必要はありませんが、いろいろなパターンがあるのでこれから紹介していきます。

まずはパッケージを作成していきます。

1. # sample1.py
2. def sample1 ( ) :
3. print ( ‘これはサンプル1です. ‘ )
4.
5.  # sample2.py
6.  def sample2 ( ) :
7.  print ( ‘これはサンプル2です. ‘ )

これら2つのpyファイル「sample1.py」と「sample2.py」を1つのディレクトリ「sampletext」にまとめましょう。そうすることで、sampletextパッケージが作成できます。

1. sampletext    # パッケージ
2. +– sample1.py   # モジュール
3. +– sample2.py   # モジュール

現在、このような構成になっています。

さらに、パッケージを初期化するためのファイル「_init_.py」を作成する必要があります。「_init_,py」には次のように記述しましょう。

1. from . import sample1
2. from . import sample2

このように記述することで、複数のモジュールを簡単に扱えるようになります。
これでパッケージの完成です。最終的な校正は次のようになっています。

1. testsample    # パッケージ
2. +– _init_.py   # 初期化ファイル
3. +– sample1 . py   # モジュール
4. +– sample2 . py   # モジュール

こうして作成したパッケージを他のプログラムで使用するためにはインポートする必要があります。

1. import sampletext   # sample1とsample2がインポートされる

このコマンドだけで先ほど作成したパッケージ「sampletext」をインポートすることができます。

正しくインポートできない場合

インポート関係の主なエラーとして「ModuleNotFoundError」「AttributeError」の2つがあります。
それでは、それぞれ説明していきますね。

ModuleNotFoundErrorとは

「ModuleNotFoundError」はモジュールが見つからないエラーです。モジュール名が違う・モジュールがカレントディレクトリにない・pipコマンドでインストールしていないなどの場合にこのエラーが起こります。

1  ModuleNotFoundError : No module named ‘xxx’ 

例えば「numpy」モジュールをインポートしたいところを「numpi」と間違えて書いてしまった場合、次のようなエラーが起こります。

1. import numpi
2. #実行結果
3. Traceback ( most recent call last ) :
4.  File ‘Main.py’ , line 1 , in < module >
5. import numpi
6. ModuleNotFoundError : No module nemad ‘numpy’

こうしたエラーに対してはモジュール名のスペルを確認する、モジュールがインストール済みであるかどうかを確かめる、存在しない場合はインストールする、などの方法によって問題を解決することができます。

AttributeErrorとは

「AttributeError」はモジュールに指定した属性が見つからないエラーです。属性名のスペルミス・ファイル名とモジュール名が同一になっている・バージョンが違う・属性初期設定やメソッド入力に問題があるといった場合に起こります。

1  AttributeError : module ‘xxx’ has no attribute ‘yyy’

よくあるケースとして、インポートしようとしているモジュール名とファイル名が被っている場合があります。

1. import csv
2.
3. with open(‘test.csv’, ‘w’) as csv:
4.  fieldnames = [‘Name’, ‘Score’]
5.  writer = csv.DictWriter(csv, fieldnames=fieldnames)
6.  writer.writeheader()

ここではCSVファイルに書き込むプログラムを作成していますが、インポートしたいモジュール名「csv」と取り込んだCSVファイルを格納するファイルオブジェクトの名前「csv」が重複してしまっています。

このような場合にはAttributeErrorが生じてしまうため、ファイルオブジェクト名を別の名前に変更する必要があります。

まとめ

今回Pythonのimportについて詳しく説明してきましたがいかがでしたでしょうか。

今回の要点をまとめると次のようになります。

  • importはモジュールやパッケージを利用利用するときに使用
  • モジュールとは関数やクラスをまとめて記述したファイル
  • パッケージとは複数のモジュールで構成されたもの
  • インポートの基本的な構文はfrom モジュール名 import オブジェクト名

Pythonの学習を進めるにつれて自作モジュールを作成して作業を効率化したい時があるでしょう。そういったときにインポート方法をマスターしておけば便利なので、ぜひこの機会に理解を深めておきましょう。

この記事を読まれた方には、こちらの記事もおすすめです!

ファイル操作をマスターしよう!Pythonでの読み込み・書き込み方法を徹底解説!Pythonを学び始めて、Pythonでテキストファイルを扱いたいと思い始めた人も少なくないでしょう。 そこで今回はPythonでテキ...
マスターしよう!PythonでのCSVファイル操作方法を徹底解説!Pythonを学習し始めた方で、CSVの扱いでつまずいている人もいるでしょう。 「PythonにおけるCSVの読み書きについて...
Pythonの出力関数printの要点をつかむ!基礎〜応用まで徹底解説Pythonを学習し始めたばかりの方で、print関数についてつまずいてしまう人も少なからずいるでしょう。 「Pythonのp...