我为不同的环境创建了一个“Django 风格”设置文件。设置文件定义了一些变量,也用作其他模块的依赖注入。
所以结构是:
settings/
___init__.py
base.py
dev.py
dev2.py
prod.py
service/
__init__.py
service.py
service_mock.py
在settings/__init__.py我写:
settings_env = os.environ.get('PROJECT_SETTINGS', '')
if settings_env == 'prod':
from .prod import *
elif settings_env == 'dev':
from .dev import *
每个设置文件定义不同的一些变量,并且还从service.py或导入一个类service_mock.py,取决于环境变量。
这大部分工作正常。
现在,问题是service.py无法导入设置包,因为设置文件导入了service.py,因此将成为循环导入。
正如我在 Django 中看到的,它是通过在设置文件中使用导入字符串而不是实际导入来解决的。我不太喜欢这个想法,因为我失去了一些 IDE 自动完成功能,而且我不确定如何实际创建 Django 提供的设置对象。
这个问题的解决方案是什么?有一个设置文件作为依赖注入容器来导入模块,并由相同的模块导入?最好是一个简单的解决方案。
千巷猫影
牛魔王的故事
相关分类