異なるElixir / SQLAlchemyアプリケーション間でデータ モデルを共有したいと考えています。そのうちの 1 つは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, ...
それは実際には良い考えでしょうか、それとも私が見逃しているものがありますか? また、理想的には、そのような「環境の初期化」を のような中心的な場所でmodel/__init__.py
行うのですが、インポートを基になるモジュールにどのように渡すのでしょうか?