我在这个很小的地方很困惑。
我有一个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
答案 0 :(得分:0)
两个版本之间有区别。
第一版
在第一个版本中,您将settings
作为模块导入constants
中。
然后,您尝试再次将其导入另一个模块(您未提及其名称)。
然后,您尝试使用有问题的语句:from settings import *
。
我猜想在尝试使用from
语句时python不会搜索已经导入的模块。不幸的是,我不知道这是否是它不起作用的真正原因(我不是该级别的专家)。
第二版
在第二个版本中,您将settings
作为模块导入constants
中。然后,您尝试再次将其导入另一个模块(您未提及其名称),并使用其中定义的对象。
这是可行的,因为python仅尝试访问已导入模块的对象,而不使用from
语句再次“导入”该对象。
可能的解决方案
您可以将constants.py
中的import语句更改为:
from myproject.settings import *
print(UserSettings) # works
我还认为第二种选择还不错:
from constants import settings
print(settings.UserSettings) # works as well