web-dev-qa-db-ja.com

importlib.import_moduleでPythonでモジュールをインポートする方法

私は importlib.import_module in Python 2.7.2および奇妙なエラーに遭遇します。

次のディレクトリ構造を考慮してください。

 a 
 | 
 +-__init __。py 
-b 
 | 
 +-__init __。py 
 -c.py 

a/b/__init__.pyには次のコードがあります。

 import importlib 
 
 mod = importlib.import_module( "c")

(実際のコードでは"c"には名前があります。)

import a.b、次のエラーが発生します。

 >>> import ab 
 Traceback(最新のコールラスト):
 File ""、1行目、
 File "a/b/__ init__.py "、3行目
 mod = importlib.import_module(" c ")
 File" /opt/Python-2.7.2/lib/python2.7/importlib/__init__.py "、 37行目のimport_module 
 __import __(name)
 ImportError:c 
という名前のモジュールはありません

私は何が欠けていますか?

ありがとう!

53
Zaar Hai

相対的なインポートの場合:

  • a)相対名を使用する
  • b)アンカーを明示的に提供する

    importlib.import_module('.c', 'a.b')
    

もちろん、代わりに絶対インポートを行うこともできます。

importlib.import_module('a.b.c')
66
Cat Plus Plus

abについて知る必要がないので、importlib.import_module('.c', __name__)を使用した方が良いと思います。

また、importlib.import_module('a.b.c')を使用する必要がある場合は、単にimport a.b.c

19
Gerald

また、各フォルダー/サブフォルダーに__init__.pyを作成することを忘れないでください(空であっても)

9
H.Sechier