97

importlib.import_modulePython 2.7.2 で使用しようとしていますが、奇妙なエラーが発生します。

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

    a
    | |
    + - __init__.py
      -b
        | |
        + - __init__.py
          - c.py

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

    importlib をインポート

    mod = importlib.import_module("c")

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

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

    >>> ab をインポート
    トレースバック (最新の呼び出しが最後):
      ファイル ""、1 行目、
      ファイル「a/b/__init__.py」の 3 行目
        mod = importlib.import_module("c")
      ファイル "/opt/Python-2.7.2/lib/python2.7/importlib/__init__.py"、37 行目、import_module
        __import__(名前)
    ImportError: c という名前のモジュールがありません

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

ありがとう!

4

3 に答える 3

119

相対インポートの場合、次のことを行う必要があります。

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

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

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

importlib.import_module('a.b.c')
于 2012-05-20T16:17:07.467 に答える