来自模块的Python导入类表示模块未找到错误



在这个非常小的问题上,我感到非常困惑。

我有一个constants.py文件,如下

if env=="qa":
from myproject.qa import settings
else:
from myproject.prod import settings

当我尝试将其导入另一个文件时,如下所示,我得到了module not found

from constants import settings
from settings import *

但以下陈述适用于

from constants import settings
print(settings.UserSettings)

下面是我的目录结构

constants.py
myproject
-qa
-settings.py
-prod
-settings.py

这两个版本之间有区别。

第一个版本

在第一个版本中,将settings作为模块导入constants

然后,您尝试在另一个模块中再次导入它(您没有提到它的名称(。

然后,您尝试使用有问题的语句:from settings import *

我想python只是在尝试使用from语句时没有搜索已经导入的模块。不幸的是,我不知道这是否是它不起作用的真正原因(我不是那个级别的专家(。

第二版本

在第二个版本中,将settings作为模块导入constants。然后,您尝试在另一个模块中再次导入它(您没有提到它的名称(,并使用其中定义的Object

这是因为python只尝试访问导入模块的对象,而不是使用from语句再次"导入"它。

可能的解决方案

您可以将constants.py中的导入语句更改为:

from myproject.settings import *
print(UserSettings) # works

我还认为第二种选择也没那么糟糕:

from constants import settings
print(settings.UserSettings) # works as well

相关内容

最新更新