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

Python 在导入的模块中找不到名称,python,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 set

我的目录结构如下所示:

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'

您能告诉我如何调试这个问题吗?

我认为您的路径行不通,因为您将超出Pythons搜索的范围
a.settings
是高于
b.settings
的一个级别,不会被查看(
Python
不会向上搜索级别-当您从
mymain.py
调用所有内容时,起点在
b
中)-或者移动文件,使其具有不同的名称,但位于相同的范围内(因此,它们都在
b
a
下,而不是在不同的嵌套级别下)

或者使用
sys.path.append(path\u to\u模块)
更改Python路径

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

my_proj/
 - mymain.py
 - a/
    - __init__.py
    - settings.py
 - b/
    - __init__.py
    - settings.py
并且有
mymain.py
use

import b.settings as settings

您是否尝试运行
b.settings
?是否有任何错误?感谢您对python路径搜索模式的解释。