有大量关于如何跨文件,模块等共享配置设置的文献......但我的问题有点不同。
在不相互了解的python包之间共享配置设置的pythonic方法是什么?
我有一个场景,由于各种技术限制,我不得不将我的代码分成3个包。
我有:
#1和#2知道#3,但#3不会也不应该知道#1和#2。
因为我正在使用Flask,所以我也使用Flask-SQLAlchemy。 Flask-SQLAlchemy为您创建一个漂亮的小db
对象,类似于直接SQLAlchemy的Base = declarative_base()
Base对象。
这意味着#3中的所有模型对象都是使用db.Model
声明的。但#3本身没有db
个对象。它需要使用它来获取包的db
对象,#1或#2。
基本上在#3中,我想通过以下方式动态导入db
db = __import__(global_config_name_of_pkg, globals(), locals(), ['db'], -1).db
#1和#2将负责设置global_config_name_of_pkg
。
我考虑过只在__builtins__
上设置一个属性,然后从那里获取值,但这看起来非常单调,我也相信这个名字在python 2和3之间发生了变化 - __builtin__
vs __builtins__
。
有关如何实现这一目标的任何建议吗?
谢谢!
为什么这个问题被标记为重复?不是!复制问题的链接与我提出的问题完全不同。
我根本不会问如何在烧瓶和其他应用之间共享SQLAlchemy模型。我已经在不同的“应用程序”之间共享SQLAlchemy模型了。
我刚才提供了上下文。也许我给出的背景隐藏了我的帖子中的 非常 第二句话。
问题就是:在不相互了解的python包之间共享配置设置的pythonic方法是什么?
如果您打算再次关闭,请证明其合理。