在这个非常小的问题上,我感到非常困惑。
我有一个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