Python のフルファイルパスからモジュールをインポートする
Najwa Riyaz
2023年1月30日
- Python 3.5 以降でフルファイルパスを使用してモジュールをインポートする
- Python 3.3 および 3.4でフルファイルパスを使用してモジュールをインポートする
- Python 2 でフルファイルパスを使用してモジュールをインポートする
指定されたパスから Python ファイルをインポートするには、Python バージョンに基づく Python ライブラリを使用します。この記事では、Python でモジュールへのフルパスを指定してモジュールをインポートする方法について説明します。
モジュールをインポートするには、Python バージョンに基づいた次のライブラリの関数を使用します。
- Python 3.5 以降の場合、
importlib.util
をインポートします。 - Python 3.3 および 3.4の場合、
importlib.machinery
、SourceFileLoader
をインポートします。 - Python 2 の場合、
imp
をインポートします。
始める前に、例を示すためにファイル設定を準備してください。
addmodule.py
ファイルに次のコードを記載します。
def printingstatement():
print("From addmodule.py")
addmodule.py
をフォルダ内に配置します。以下の例では、c:\\Users\\Rexjohn\\Folder-1\\
内にあります。
Python 3.5 以降でフルファイルパスを使用してモジュールをインポートする
Python 3.5 以降の場合、importlib.util
ライブラリの関数を使用してモジュールをインポートします。
import importlib.util
MODULE_PATH = "c:\\Users\\Rexjohn\\Folder-1\\addmodule.py"
MODULE_NAME = "addmodule"
spec = importlib.util.spec_from_file_location(MODULE_NAME, MODULE_PATH)
modulevar = importlib.util.module_from_spec(spec)
spec.loader.exec_module(modulevar)
modulevar.printingstatement()
ここでは、importlib.util
ライブラリの次の関数を使用します。
spec_from_file_location(MODULE_NAME, MODULE_PATH)
。MODULE_PATH
にモジュール名MODULE_NAME
のフルファイルパスを記載してください。module_from_spec(spec)
exec_module(modulevar)
出力:
From addmodule.py
Python 3.3 および 3.4でフルファイルパスを使用してモジュールをインポートする
Python 3.3 および 3.4を使用している場合は、importlib.machinery
、SourceFileLoader
ライブラリの関数を使用してモジュールをインポートできます。
from importlib.machinery import SourceFileLoader
MODULE_PATH = "c:\\Users\\Rexjohn\\Folder-1\\addmodule.py"
MODULE_NAME = "addmodule"
modulevar = SourceFileLoader(MODULE_NAME, MODULE_PATH).load_module()
modulevar.printingstatement()
ここでは、importlib.machinery
、SourceFileLoader
ライブラリの次の関数を言及して使用します。
SourceFileLoader(MODULE_NAME, MODULE_PATH).load_module()
出力:
From addmodule.py
Python 2 でフルファイルパスを使用してモジュールをインポートする
Python 2 の場合、imp
ライブラリの関数を使用してモジュールをインポートします。
import imp
MODULE_PATH = "c:\\Users\\Rexjohn\\Folder-1\\addmodule.py"
MODULE_NAME = "addmodule"
modulevar = imp.load_source(MODULE_NAME, MODULE_PATH)
modulevar.printingstatement()
ここでは、imp
ライブラリから次の関数を使用します。
load_source(MODULE_NAME, MODULE_PATH)
出力:
From addmodule.py