Python のフルファイルパスからモジュールをインポートする

  1. Python 3.5 以降でフルファイルパスを使用してモジュールをインポートする
  2. Python 3.3 および 3.4​​でフルファイルパスを使用してモジュールをインポートする
  3. Python 2 でフルファイルパスを使用してモジュールをインポートする

指定されたパスから Python ファイルをインポートするには、Python バージョンに基づく Python ライブラリを使用します。この記事では、Python でモジュールへのフルパスを指定してモジュールをインポートする方法について説明します。

モジュールをインポートするには、Python バージョンに基づいた次のライブラリの関数を使用します。

  1. Python 3.5 以降の場合、importlib.util をインポートします。
  2. Python 3.3 および 3.4​​の場合、importlib.machinerySourceFileLoader をインポートします。
  3. 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.machinerySourceFileLoader ライブラリの関数を使用してモジュールをインポートできます。

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.machinerySourceFileLoader ライブラリの次の関数を言及して使用します。

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

関連記事 - Python Import

  • Python で 1つのディレクトリにすべてのモジュールをインポートする
  • Python でファイルからすべての関数をインポートする
  • Python で別のファイルから変数をインポートする