0

Python モジュールに関する質問があります。

さまざまなハードウェアから出力を取得してデータベースに保存するスクリプトを作成する必要があります。現在のハードウェアについては知っていますが、将来追加される追加のハードウェアについては知りません。すみません、もう少し具体的に。

スクリプトは、配電盤に接続されたハードウェア モジュールから電力情報を取得します。これらのモジュールは生のセンサー情報を取得し、tcp/ip 経由で利用できるようにします。ハードウェア モジュールに問い合わせて情報を収集する関数をテスト スクリプトに記述しました。問題は、私が知っているものだけでなく、さまざまなハードウェア モジュールが使用される場所にこれを展開する必要があることです。すべてのハードウェア モジュールは同じ情報を利用可能にしますが、それらはすべて異なる方法でそれを行います。telnet または ssh を使用するもの、Web ページを提供するもの、xml 出力を提供するもの、snmp を使用するものがあります。新しいデバイス用に Python モジュールを記述して、情報を引き出して標準的な方法でスクリプトに提供できるメカニズムを作成して、スクリプトがデータベースにデータを入力し、通常どおり生活できるようにしたいと考えています。

そのため、新しいハードウェア モジュール タイプが検出されるたびに新しい関数をスクリプトに追加し、それを「if」ステートメントなどでラップする代わりに、その関数をモジュールに動的に追加できるモジュールにオフボードするメカニズムはありますか?脚本。プラグイン型の仕組みが思い浮かびます。しかし、それはあまり適していないと思います。

このようなものが使用または実装されている場所への提案や指示は大歓迎です。

4

1 に答える 1

0

コードでインポート関数を使用できます。Pythonのバージョンに応じて、importlib(Python 2.7で追加)または__import__関数を試してください。

サポートするハードウェアデバイスごとにプラグインを作成できます。そのような各プラグインは、それ自体をどこかに登録できます(環境変数に配置されたメインモジュールパスまたはWindowsレジストリの既知のパス)。次に、コードはその場所をチェックし(定期的に、起動時に-ニーズに応じて)、見つかった各プラグインをロードします。distutilsを使用して、プラグインをパッケージとしてパックすることもできeggます。

Pythonソースから実行している場合は非常にうまく機能しますが、PyInstallerまたはPy2exeを使用して実行可能ファイルをビルドする場合は、より複雑になることに注意してください。

于 2012-08-30T12:37:37.290 に答える