Pythonでフルパスを指定してモジュールを動的にインポートする方法には、主にいくつかのアプローチがあります。ここでは、標準ライブラリimportlibや従来のimpモジュールを使用する方法について説明します。

importlibを使った動的インポート

Python 3.5以降では、importlib.utilを使用してモジュールをファイルパスからインポートできます。この方法は推奨され、最も柔軟で使いやすいです。以下にコード例を示します。

import importlib.util
import sys
# モジュールのファイルパスと名前を指定
spec = importlib.util.spec_from_file_location("module_name", "/path/to/module.py")
module = importlib.util.module_from_spec(spec)
sys.modules["module_name"] = module
spec.loader.exec_module(module)
# モジュール内のクラスや関数にアクセス
module.MyClass()

この方法は、モジュール名やパスを動的に指定し、システムのモジュールキャッシュにも追加します。

impモジュールを使ったインポート(Python 2)

古いPythonバージョン(Python 2.x)ではimp.load_source()を使用します。この方法はPython 3.4で非推奨となり、現在はimportlibが推奨されていますが、レガシーコードを扱う場合にはまだ利用されることがあります。

import imp
module = imp.load_source("module_name", "/path/to/module.py")
module.MyClass()

sys.pathの利用による簡易インポート

他の簡易的な方法として、モジュールがあるディレクトリを一時的にsys.pathに追加する方法もあります。この方法は動的インポートというよりも、通常のインポート方法を柔軟に使いたい場合に役立ちます。

import sys
sys.path.append("/path/to/modules")
import my_module

ただし、この方法は一時的にパスを変更するため、依存関係が複雑なプロジェクトでは注意が必要です。

まとめ

Pythonでフルパスを指定してモジュールを動的にインポートする方法として、importlibは最も信頼性が高く、クロスバージョンで互換性があります。古いバージョンをサポートする場合には、impを使用することもありますが、可能であればimportlibに移行することが推奨されます。