我想在不同的Elixir / SQLAlchemy应用程序之间共享我的数据模型,其中一个是Camelot UI 和其他东西,如 Web 界面等。它们都将连接到同一个底层数据库。
据我所知,要构建一个 Camelot 应用程序,我的模型会这样做from camelot import blah
,这将阻止它在没有安装 Camelot 的任何环境中运行。
我想知道是否有推荐的方法/最佳实践来做到这一点。这个想法当然是为我的模型维护一个单一的代码库,而不是在不同应用程序之间以细微的差异来复制它(比如从这里从 SA/Elixir 导入,从那里从 Camelot 导入,等等)。
我的项目目前使用模型/ python 包进行布局:
model/__init__.py
foo.py
bar.py
...
init .py 看起来像这样:
from foo import a, b, c
from bar import d, e, f
__all__ = ('a', 'b', 'c', 'd', 'e', 'f')
而python模块foo.py、bar.py等实际上实现了各个部分。这些模块中的每一个都是这样开始的:
from sqlalchemy import Integer, Numeric, Date, Unicode, LargeBinary
from elixir import Entity, Field, ManyToOne, OneToMany, ManyToMany
from elixir import using_options
一个想法可能是做类似的事情:
try:
from camelot import Integer, Numeric, ...
except ImportError:
from elixir import Integer, Numeric, ...
这实际上是一个好主意还是我错过了什么?另外,理想情况下,我会在某个中心位置(例如 in )执行那种“环境初始化”的工作model/__init__.py
,但是我如何将导入传递给底层模块呢?