使用しようとしていますimportlib.import_module
Python 2.7.2 で奇妙なエラーに遭遇しました。
次の dir 構造を考えてみましょう。
1つの | + - __init__.py - ば | + - __init__.py - c.py
a/b/__init__.py
次のコードがあります:
インポートimportlib mod = importlib.import_module("c")
(実際のコードには"c"
名前があります。)
を試行するとimport a.b
、次のエラーが発生します。
>>> インポート トレースバック(最新の呼び出しが最後): ファイル ""、行 1、 ファイル「a/b/__init__.py」、3行目、 mod = importlib.import_module("c") ファイル "/opt/Python-2.7.2/lib/python2.7/importlib/__init__.py"、import_module の 37 行目 __import__(名前) ImportError: c という名前のモジュールがありません
何が足りないのでしょうか?
ありがとう!
ベストアンサー1
相対インポートの場合は、次の操作を行う必要があります。
- a) 相対名を使用する
b) アンカーを明示的に提供する
importlib.import_module('.c', 'a.b')
もちろん、代わりに絶対インポートを実行することもできます。
importlib.import_module('a.b.c')