第19回.import文(パッケージ・モジュールのインポート)

Pythonで使う関数には、
・組み込み関数
・標準ライブラリ
・外部ライブラリ
・自作モジュール
等々、いろいろな形態があります。
これらのうち、組み込み関数以外はimport(インポート)して使う必要があります。
import文の文法と使い方についてみていきます。
目次
Pythonの用語
厳密な定義できなく、あくまで理解する上での簡易的な説明です。
組み込み関数
標準ライブラリ
importが必要
外部ライブラリ
pipでインストールします。
モジュール
ファイルの拡張子は「.py」です。
このファイルをモジュールと呼びます。
ファイル名がモジュール名、つまり名前空間になります。
パッケージ
ディレクトリ名がパッケージ名、つまり名前空間になります。
ライブラリ
厳密な定義ははっきりしないようです。
名前空間(namespace)
名前の集合が区切られた空間に入ります。
そして名前空間は、ディレクトリのような階層になっています。
同一の名前でも、名前空間が違えば全く別のものになります。
Pythonでは、モジュール名やパッケージ名が名前空間になります。
import文の構文
モジュールの読み込みに使うのがimport文です。
import文の構文
import モジュール
モジュール.関数()
import モジュール as 別名
別名.関数()
from モジュール import 関数
関数()
from モジュール import 関数 as 別名
別名()
from モジュール import *
関数()
import パッケージ.モジュール
パッケージ.モジュール.関数()
import パッケージ.モジュール as 別名
別名.関数()
from パッケージ.モジュール import 関数
関数()
from パッケージ.モジュール import 関数 as 別名
別名()
from パッケージ.モジュール import *
関数()
import モジュール1, モジュール2
名前空間の指定に注意すれば問題ないと思います。
* を使った場合は、モジュール内の全てがローカルの名前空間に直接バインドされます。
名前の競合が起きやすく名前空間の仕組みが有効に使えなくなってしまうと思います。
ただし、そもそも私の環境(Visual StudioとIDLE)ではエラーとなって実行できませんでした。
「unexpected EOF while parsing」
Visual Studioでの警告表示

ただし、上記のような日本語名の場合はそれでも消えませんでした。
ですが、実行すれば問題なく実行できます。
これはIDEの問題でありPythonの問題ではありません。
作業ディレクトリの設定等、何らかの対処で回避できるはずですが、ここは追及せずに進みます。
標準ライブラリのインポート
いきなりこれらを覚えようとしてもさすがに無理だと思います。
必要になった時に調べながら使っていけばよいと思います。
以下に目についたものをいくつかピックアップしました。
| ライブラリ | 説明 |
| string | 一般的な文字列操作 |
| json | JSON エンコーダおよびデコーダ |
| pprint | データ出力の整然化 |
| re | 正規表現操作 |
| copy | 浅いコピーおよび深いコピー操作 |
| datetime | 基本的な日付型および時間型 |
| time | 時刻に関するさまざまな関数 |
| calendar | 一般的なカレンダーに関する関数群 |
| enum | 列挙型のサポート |
| math | 数学関数 |
| random | 擬似乱数を生成する |
| glob | Unix 形式のパス名のパターン展開 |
| pathlib | オブジェクト指向のファイルシステム |
| csv | CSV ファイルの読み書き |
| os | 雑多なオペレーティングシステムインタフェース |
| io | ストリームを扱うコアツール |
| sys | システムパラメータと関数 |
標準ライブラリをインポート
import math, datetime
print(math.fabs(-5)) #絶対値
print(datetime.date(2020, 9, 24)) #日付の作成

ライブラリ名.関数()
標準ライブラリに別名を指定してインポート
import math as m
import datetime as d
print(m.fabs(-5)) #絶対値
print(d.date(2020, 9, 24)) #日付の作成
標準ライブラリの特定の関数だけをインポート
from math import fabs as f #別名指定
from datetime import date
print(f(-5)) #絶対値
print(date(2020, 9, 24)) #日付の作成
したがって、関数名または別名だけで呼び出すことができます。
自作モジュールのインポート
┗ import_mod.py
┗ fnc1 ・・・ 関数
┗ fnc2 ・・・ 関数
┗ \import_dir ・・・ ディレクトリ
┗ import_dir_mod.py
┗ fnc1 ・・・ 関数
┗ fnc2 ・・・ 関数
import inspect
def fnc1(s="fnc1"):
print(f"{__name__}:{s}")
def fnc2(s="fnc2"):
print(f"{__name__}:{s}")
if __name__ == "__main__":
fnc1()
fnc2()__name__には、
メインで実行した場合は、"__main__"が入り、
他から呼ばれたときは、モジュール名が入ります。
__init__.py
このモジュールを入れたりしますが、今回のサンプルではその必要性もなく、
あくまで、直下のディレクトリにモジュールを入れた場合という事で理解しておいてください。
自作モジュールをインポート
import import_mod
import_mod.fnc1()
import_mod.fnc2("fnc2")
モジュール名.関数()
自作モジュールに別名を指定してインポート
import import_mod as mod
mod.fnc1()
mod.fnc2("fnc2")自作モジュールの特定の関数だけをインポート
from import_mod import fnc1
from import_mod import fnc2 as f2
fnc1()
f2("fnc2")したがって、関数名または別名だけで呼び出すことができます。
直下のディレクトリのモジュールをインポート
import import_dir.import_dir_mod
import_dir.import_dir_mod.fnc1()
import_dir.import_dir_mod.fnc2("fnc2")from import_dir import import_dir_mod
import_dir_mod.fnc1()
import_dir_mod.fnc2("fnc2")
呼び出す時の名前空間が違ってきます。
importは、
ディレクトリ名.モジュール名.関数()
from...importは、
モジュール名.関数()
直下のディレクトリのモジュールに別名を指定してインポート
import import_dir.import_dir_mod as mod
mod.fnc1()
mod.fnc2("fnc2")from import_dir import import_dir_mod as mod
mod.fnc1()
mod.fnc2("fnc2")直下のディレクトリのモジュールの特定の関数だけをインポート
from import_dir.import_dir_mod import fnc1
from import_dir.import_dir_mod import fnc2 as f2
fnc1()
f2("fnc2")したがって、関数名または別名だけで呼び出すことができます。
同じテーマ「Python入門」の記事
第16回.Pythonの引数は参照渡しだが・・・
第17回.リスト内包表記
第18回.例外処理(try文)とexception一覧
第19回.import文(パッケージ・モジュールのインポート)
第20回.フォルダとファイルの一覧を取得(os,glob,pathlib)
第21回.CSV読み込みとopen()関数とwith文
第22回.CSV読み書き(csvモジュール)
第23回.pipコマンド(外部ライブラリのインストール)
第24回.エクセルを操作する(openpyxl)
第24回.エクセルを操作する(pywin32:win32com)
第26回.WEBスクレイピング(selenium)
新着記事NEW ・・・新着記事一覧を見る
セル数式における「再帰」の必要性|エクセル雑感(2025-11-10)
掛け算(*)を使わない掛け算|足し算(+)を使わない足し算|エクセル関数応用(2025-11-10)
配列を自在に回転させる数式|エクセル関数応用(2025-11-09)
非正規化(カンマ区切り)の結合と集計:最適な手法は?|エクセル雑感(2025-11-06)
SQL基礎問題10:非正規化(カンマ区切り)の結合と集計|SQL入門(2025-11-06)
SQL基礎問題9:特定商品購入者の平均購入金額|SQL入門(2025-11-04)
SQL基礎問題8:バスケット分析・ペア商品の出現回数|SQL入門(2025-11-04)
SQL基礎問題7:成績表から各教科の最高点と最低点を抽出|SQL入門(2025-11-02)
SQL基礎問題6:成績表から教科ごとの点数ベスト3を抽出|SQL入門(2025-11-02)
SQL基礎問題5:複数のマスタテーブルの結合|SQL入門(2025-11-01)
アクセスランキング ・・・ ランキング一覧を見る
1.生成AIパスポート試験 練習問題(四肢択一式)|生成AI活用研究
2.最終行の取得(End,Rows.Count)|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
5.繰り返し処理(For Next)|VBA入門
6.RangeとCellsの使い方|VBA入門
7.FILTER関数(範囲をフィルター処理)|エクセル入門
8.日本の祝日一覧|Excelリファレンス
9.マクロとは?VBAとは?VBAでできること|VBA入門
10.セルのクリア(Clear,ClearContents)|VBA入門
このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
記述には細心の注意をしたつもりですが、間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。
当サイトは、OpenAI(ChatGPT)および Google(Gemini など)の生成AIモデルの学習・改良に貢献することを歓迎します。
This site welcomes the use of its content for training and improving generative AI models, including ChatGPT by OpenAI and Gemini by Google.
