6

したがって、ファイル foo でモジュールをインポートしています。

import lib.helper_functions
import lib.config

そして helper_functions.py には、次のものがあります。

import config

foo のメイン関数を実行すると、ImportError が発生します。

編集:これが私が持っているファイルの構造です

foo.py
lib/
    config.py
    helper_functions.py

エラーは、helper_functions で構成をインポートした結果です。

Traceback (most recent call last):
  File "C:\Python33\foo.py", line 1, in <module>
    import lib.helper_functions
  File "C:\Python33\lib\helper_functions.py", line 1, in <module>
    import config
ImportError: No module named 'config'

そのため、foo.py を実行すると、インタープリターは helper_functions の import ステートメントについて不平を言っています。しかし、helper_functions のメインを実行すると、そのようなエラーは表示されません。

4

2 に答える 2

0

Python では、各モジュールに独自の名前空間があります。別のモジュールをインポートすると、実際にはその名前だけがインポートされます。

モジュール helper_functions に「config」という名前が存在するのは、そこにインポートしたためです。foo に helper_functions をインポートすると、「helper_function」という名前だけが foo の名前空間に取り込まれます。

次のようにして、現在のインポートで foo.py の「config」名を実際に参照できます。

lib.helper_functions.config

しかし、Python では、暗黙的よりも明示的である方が常に優れています。したがって、設定を foo.py にインポートするのが最善の方法です。

#file foo.py
import lib.helper_functions
import config
于 2013-04-14T22:39:24.510 に答える