1. ホーム
  2. python

[解決済み] フルパスでモジュールをインポートするには?

2022-03-03 17:49:44

質問

Pythonモジュールをフルパスでロードするにはどうしたらいいですか?

設定オプションなので、ファイルはファイルシステム上のどこにでもあることに注意してください。

解決方法は?

Python 3.5以上の場合。

import importlib.util
spec = importlib.util.spec_from_file_location("module.name", "/path/to/file.py")
foo = importlib.util.module_from_spec(spec)
spec.loader.exec_module(foo)
foo.MyClass()

Python 3.3、3.4の場合はこちらをご利用ください。

from importlib.machinery import SourceFileLoader

foo = SourceFileLoader("module.name", "/path/to/file.py").load_module()
foo.MyClass()

(ただし、これはPython 3.4で非推奨となりました)。

Python 2の場合は使用します。

import imp

foo = imp.load_source('module.name', '/path/to/file.py')
foo.MyClass()

コンパイルされたPythonファイルやDLLには、同等の便利な関数が用意されています。

参照 http://bugs.python.org/issue21436 .