所以在文件foo中我导入模块:
import lib.helper_functions
import lib.config
在helper_functions.py中,我有:
import config
当我运行foo的main函数时,我得到一个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的主要部分时,不会出现这样的错误。
答案 0 :(得分:7)
您需要使用绝对导入导入config
。使用:
from lib import config
或使用:
from . import config
Python 3仅支持绝对导入;声明import config
仅导入顶级模块config
。
答案 1 :(得分:0)
在python中,每个模块都有自己的命名空间。导入另一个模块时,实际上只导入其名称。
名称“config”存在于模块helper_functions中,因为您在那里导入了它。在foo中导入helper_functions只会将名称“helper_function”带入foo的命名空间,没有别的。
您实际上可以通过执行以下操作来引用当前导入的foo.py中的“config”名称:
lib.helper_functions.config
但是在python中,最好是明确而不是隐式。因此,在foo.py中导入config是最好的方法。
#file foo.py
import lib.helper_functions
import config