Python &引用;从「;导入的工作方式不同

Python &引用;从「;导入的工作方式不同,python,Python,我的Python代码中有这段代码(settings.py位于项目的目录中): 这很好用。我想我可以改写成这样: from PROJECT import settings ... if settings.BASE_DIR: ... 但这给出了一个AttributeError:“NoneType”对象没有属性“BASE\u DIR” 我在这里遗漏了什么吗?来自父级的导入名称格式首先在模块名称空间中查找名称(在\uuuu init\uuuuuuuuuuuuupy中设置,或者在父级模块中添加该名

我的Python代码中有这段代码(
settings.py
位于
项目的目录中):

这很好用。我想我可以改写成这样:

from PROJECT import settings
...
if settings.BASE_DIR:
   ...
但这给出了一个
AttributeError:“NoneType”对象没有属性“BASE\u DIR”


我在这里遗漏了什么吗?

来自父级的
导入名称
格式首先在
模块
名称空间中查找名称(在
\uuuu init\uuuuuuuuuuuuupy
中设置,或者在
父级
模块中添加该名称的任何内容)

在您的情况下,
项目
中的
\uuuu init\uuuuu.py
文件已将
设置
设置为
。在任何包含的模块之前都可以找到该名称


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

来自父导入名称的
格式首先查找
模块
命名空间中的名称(在
\uuuu init\uuuuuuuuupy
或任何将该名称添加到
父模块的内容中设置)

在您的情况下,
项目
中的
\uuuu init\uuuuuuupy
文件已将
设置
设置为
。在任何包含的模块之前都可以找到此名称


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

请注意,如果这是Django(看起来是这样的)您应该始终通过django.conf导入设置中的
导入设置,而不是直接从您的项目导入设置。@DanielRoseman谢谢。我现在正在尝试部署我的网站,但时间紧迫。我稍后会更新代码以更正。好吧,除此之外,这解决了您的问题,因此您可能应该现在就进行。这不会影响您的工作我的问题。我得到了同样的错误。注意,如果这是Django(看起来是这样的)您应该始终通过django.conf导入设置中的
导入设置,而不是直接从您的项目导入设置。@DanielRoseman谢谢。我现在正在尝试部署我的网站,但时间紧迫。我稍后会更新代码以更正。好吧,除此之外,这解决了您的问题,因此您可能应该现在就进行。这不会影响您的工作x我的问题。我得到了相同的错误。谢谢,虽然
\uuu init.py\uuuu
基本上是空的,但我估计还有一些其他的东西(我正在使用Django)这将它设置为
None
。我一直认为这两个是相同的,但显然不是。谢谢,虽然
\uuu init.py\uuu
基本上是空的,但我估计还有一些其他东西(我正在使用Django)将它设置为
None
。我一直认为这两个是相同的,但显然不是。
from PROJECT import settings
...
if settings.BASE_DIR:
   ...