我想在不同的
Elixir
/
SQLAlchemy
应用程序,其中一个是
Camelot
用户界面和其他东西,比如Web界面等等。它们都将连接到同一个基础数据库。
据我所知,要构建一个camelot应用程序,我的模型可以做到
from camelot import blah
这将阻止它在任何没有安装camelot的环境中运行。
我想知道是否有推荐的方法/最佳实践可以做到这一点。当然,我的想法是为我的模型维护一个单一的代码库,而不是在不同的应用程序之间使用细微的差异来复制它(比如从sa/elixir导入,从camelot导入,等等)。
我的项目目前使用的是一个模型/python包:
model/__init__.py
foo.py
bar.py
...
初始化
.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, ...
那是不是真的
好的
有什么想法或是我找不到的?而且,理想情况下,我会在某个中心位置执行这种“环境初始化”操作,比如
model/__init__.py
,但如何将导入传递到基础模块?