在导入的模块中找不到名称

时间:2015-07-14 09:53:28

标签: python

我的目录结构如下:

a/
 - b/
    - __init__.py
    - settings.py
    - mymain.py
 - settings.py

A / settings.py

#the common names
ES_HOSTS = ["localhost"]

B / settings.py:

from a.settings import *
#the names that is specific to b.settings

B / main.py

import settings
print settings.ES_HOSTS

python告诉我

 AttributeError: 'module' object has no attribute 'ES_HOSTS'

你能帮忙告诉我如何调试这个问题吗?

1 个答案:

答案 0 :(得分:0)

我不认为你的道路会起作用,因为你已经超出了Pythons搜索的范围。 a.settings高于b.settings,并且不会被查看(Python没有搜索到某个级别 - 并且从mymain.py开始调用所有内容,起点在b之内 - 要么移动文件,使其具有不同的名称,但是在同一范围内(因此都在ba下,而不是不同的嵌套水平)。

或者使用sys.path.append(path_to_module)更改Python路径。

另一种方法是将ab拆分为同一级别的单独非嵌套文件夹,并在其上方mymain.py,如下所示:

my_proj/
 - mymain.py
 - a/
    - __init__.py
    - settings.py
 - b/
    - __init__.py
    - settings.py

mymain.py使用

import b.settings as settings