“from”import的工作方式不同

时间:2016-09-29 08:56:22

标签: python

我的Python代码中包含此代码(settings.py位于PROJECT目录中):

import PROJECT.settings
...
if PROJECT.settings.BASE_DIR:
   ...

工作正常。我想我可以改写一下:

from PROJECT import settings
...
if settings.BASE_DIR:
   ...

但这会产生AttributeError: 'NoneType' object has no attribute 'BASE_DIR'

我在这里错过了什么吗?

1 个答案:

答案 0 :(得分:3)

from parent import name格式首先在module命名空间中查找名称(在__init__.py中设置或在parent模块中添加该名称的任何内容)。

在您的情况下,__init__.py中的PROJECT文件已将settings设置为None。在任何包含的模块之前找到它的名称。

import parent.name表单只会查找包中的模块,而不会查找parent模块中定义的名称。