1. ホーム
  2. python

[解決済み】Pythonで最小限のプラグインアーキテクチャを構築する

2022-04-14 20:30:41

質問

Pythonで書かれたアプリケーションを持っていますが、かなり技術的な読者(科学者)に使用されています。

私は、ユーザーによってアプリケーションを拡張可能にする良い方法、すなわちスクリプト/プラグイン・アーキテクチャを探しています。

私は何かを探しています <強い 超軽量 . ほとんどのスクリプトやプラグインは、サードパーティによって開発・配布され、インストールされるものではなく、繰り返しのタスクを自動化したり、あるファイルフォーマットのサポートを追加したりするために、ユーザーが数分で作り上げるものでしょう。ですから、プラグインは最小限の定型的なコードを持ち、フォルダにコピーする以外には「インストール」を必要としません (ですから setuptools entry points や Zope plugin architecture のようなものは過剰だと思われます)。

このようなシステム、または同様のスキームを実装しているプロジェクトで、私がアイデアやインスピレーションを得るために見るべきものはありますか?

解決方法は?

私のは、基本的に、"plugins"というディレクトリで、メインアプリがポーリングして使うことができます。 imp.load_module でファイルをピックアップし、よく知られたエントリーポイントを探し、おそらくモジュールレベルの設定パラメータを付けて、そこから移動します。私は、プラグインがアクティブになるダイナミズムのために、ファイル監視のものを使っていますが、これは必要なものです。

もちろん、「Xは必要ない、軽量なものがいい」という要求があれば、Xを一度に1つずつ実装し直すというリスクはあります。でも、それを楽しんでやれないわけではありません。)