我的目录结构如下:
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'
你能帮忙告诉我如何调试这个问题吗?
答案 0 :(得分:0)
我不认为你的道路会起作用,因为你已经超出了Pythons搜索的范围。 a.settings
高于b.settings
,并且不会被查看(Python
没有搜索到某个级别 - 并且从mymain.py
开始调用所有内容,起点在b
之内 - 要么移动文件,使其具有不同的名称,但是在同一范围内(因此都在b
或a
下,而不是不同的嵌套水平)。
或者使用sys.path.append(path_to_module)
更改Python路径。
另一种方法是将a
和b
拆分为同一级别的单独非嵌套文件夹,并在其上方mymain.py
,如下所示:
my_proj/
- mymain.py
- a/
- __init__.py
- settings.py
- b/
- __init__.py
- settings.py
并mymain.py
使用
import b.settings as settings