Python

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

プログラミングの家庭教師『Tech Teacher』


引用元:Tech Teacher

「スクールに通い続ける自信がない…」
「時間がなくてスクールに通えない…」

そんな方にはプログラミングの家庭教師『Tech Teacher』がおすすめです。
Tech Teacherはマンツーマン指導なので、生徒様一人ひとりに最適な指導を行うことができます。また、オンライン指導も可能なので、全国どこにいても家庭教師の授業を受けることができます。

Tech Teacherの3つの特徴


生徒様に最適化されたマンツーマン指導
完全マンツーマンの指導なので、生徒様の目的・学習状況・ご要望に合わせて、最適な指導をご提供いたします。

指導力・人柄・相性の優れた教師のご紹介
Tech Teacherには採用率20%の選考を突破した、指導力の高い教師が在籍しています。また、選考では指導力だけではなく人柄も重視しております。

1,000人の教師が在籍!幅広い指導に対応可能
業界トップレベルの1,000人の教師が在籍しています。そのため、幅広い言語・ツール・目的に対応することができます。

家庭教師ならではの5つの魅力


オーダーメイドのカリキュラム
生徒様一人ひとりに習熟度・目的・期間に応じて最適なカリキュラムを提供いたします。

きめ細やかなフォローが可能
生徒様からのご要望にきめ細やかに対応し、学習計画や勉強法などの指導もできるので、普段の勉強も捗ります。

習い事・学業・お仕事との両立が簡単
教室に通う必要がないので親御様の送迎も不要です。授業時間・頻度を生徒様のご都合に合わせて自由に調節することができます。

自分のペースで進められる
生徒様の理解度や意欲に応じて授業のスピードを調節できます。不明点や疑問点は都度立ち止まって解消できるので、着実に理解して進むことができます。

すぐ質問できるから挫折しない
先生を独り占めできるので、周りの目を気にすることなく分からないところをいつでも質問できます。

Tech Teacherへのお問い合わせ

無料体験授業・資料請求のお問い合わせはこちらから

質問のみのお問い合わせも受け付けております。