0

私はツイストで働き始めたばかりです。ねじれたプラグイン システムを理解するのにいくつか問題があります。私が達成したいのは、プラグインを配置できるアプリ内のフォルダー/パッケージで、リアクターを起動したときにツイストによって認識されるようにすることです。

私のプロジェクト構造は次のようになります。

MyProj
  |-__init__.py
  |-myproj
      |-__init__.py
      |-imatism.py
      |-twisted
            |-__init__.py
            |-plugins
                 |-simplematerial.py
   

ドキュメントThe Twisted Plugin Systemの説明に従うと、プラグインを正しいパッケージに配置するかどうかわかりません。チュートリアルで説明されているように、プラグイン ディレクトリにinit .pyはありません。リアクターを起動してもエラーはスローされませんがgetPlugins(MyProj.myproj.imatism.IMaterial)、SimpleMaterial の 2 つのオブジェクトをインスタンス化しても空のリストが返されます。

「代替プラグイン パッケージ」(上記のリンクを参照) も試してみましたが、同じ動作で終了しました。エラーはありませんが、プラグインの出力もありません。

プラグインがロードされているのに、正しくインスタンス化されていないか、間違った場所にインスタンス化されていない可能性がありますか?

誰か助けてくれませんか?

4

1 に答える 1

0

init.pyあなたの質問は本当に意味がありましたか?それとも、それらは__init__.pyファイルであることを意図していますか?

後者の場合は、構造を次のように変更してみてください。

MyProj
  |-myproj
      |-__init__.py
      |-imatism.py
      |-twisted
            |-plugins
                 |-simplematerial.py

重要なの__init__.pyは、ディレクトリを Python (配布スタイルではなくインポート スタイル) パッケージにすることです。into__init__.pyMyProj使用するimport MyProjと、アプリケーション コードに書き込めるようになりますが、__init__.pyinMyProj/myprojがなかったimport MyProj.myprojため、ほとんどのコードにアクセスできない可能性があります。また、名前の冗長性はあまり役に立ちません。

__init__.pyfromも削除しましたMyProj/myproj/twisted。これは Twisted プラグイン システムが機能する方法だからです。そのディレクトリを Python パッケージにするのではなく、単なる通常のディレクトリです。

于 2013-04-24T12:29:43.980 に答える