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が生じてしまうため、ファイルオブジェクト名を別の名前に変更する必要があります。
『Tech Teacher』3つの魅力
魅力1. オーダーメイドのカリキュラム
『Tech Teacher』では、決められたカリキュラムがなくオーダーメイドでカリキュラムを組んでいます。「質問だけしたい」「相談相手が欲しい」等のご要望も実現できます。
魅力2. 担当教師によるマンツーマン指導
Tech Teacherでは、完全マンツーマン指導で目標達成までサポートします。
東京大学を始めとする難関大学の理系学生・院生・博士の教師がが1対1で、丁寧に指導しています。
そのため、理解できない箇所は何度も分かるまで説明を受けることができます。
魅力3. 3,960円/30分で必要な分だけ受講
Tech Teacherでは、授業を受けた分だけ後払いの「従量課金制」を採用しているので、必要な分だけ授業を受講することができます。また、初期費用は入会金22,000円のみです。一般的なプログラミングスクールとは異なり、多額な初期費用がかからないため、気軽に学習を始めることができます。
まとめ
・魅力1. 担当教師によるマンツーマン指導
・魅力2. オーダーメイドのカリキュラム
・魅力3. 3,960円/30分で必要な分だけ受講
質問のみのお問い合わせも受け付けております。
まとめ
今回Pythonのimportについて詳しく説明してきましたがいかがでしたでしょうか。
今回の要点をまとめると次のようになります。
- importはモジュールやパッケージを利用利用するときに使用
- モジュールとは関数やクラスをまとめて記述したファイル
- パッケージとは複数のモジュールで構成されたもの
- インポートの基本的な構文はfrom モジュール名 import オブジェクト名
Pythonの学習を進めるにつれて自作モジュールを作成して作業を効率化したい時があるでしょう。そういったときにインポート方法をマスターしておけば便利なので、ぜひこの機会に理解を深めておきましょう。
この記事を読まれた方には、こちらの記事もおすすめです!