如何跨包

时间:2015-10-21 09:43:28

标签: python flask flask-sqlalchemy

有大量关于如何跨文件,模块等共享配置设置的文献......但我的问题有点不同。

在不相互了解的python包之间共享配置设置的pythonic方法是什么?

我有一个场景,由于各种技术限制,我不得不将我的代码分成3个包。

我有:

  1. python 3 flask应用程序包
  2. 用于scrapy web scraper应用程序的软件包(python 2.7)
  3. #1和#2
  4. 使用的基本数据库模型包

    #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方法是什么?

    如果您打算再次关闭,请证明其合理。

0 个答案:

没有答案