0

プラグインフレームワークにYAPSYを使用するアプリケーションがあります。プログラムはデフォルトのプラグインディレクトリを指定し、ユーザーがディレクトリ(XMLファイルに保存されている)も指定できるようにします。

    # Get the default plugin directory, using XML
    path = os.path.expanduser('~')
    xml = xml_controller.Controller(path + '\.cxvrc.xml')
    xml.load_file()
    xml.get_plugin_directory()
    directory = ["plugins", xml.get_plugin_directory()]

    # Load the plugins from the default plugin directory.
    manager = PluginManager()
    manager.setPluginPlaces(directory)
    manager.setPluginInfoExtension('plugin')
    manager.collectPlugins()

これに伴う問題は、ファイルシステムのどこにいても、ユーザーのプラグインをロードしていることです。基本的に、XMLファイルクエリの結果の文字列を無視します。なぜこれができるのでしょうか?何の例

    xml.get_plugin_directory()

戻り値は文字列です: "C:\ Documents and Settings\achilds"。collectPlugins()メソッドは、setPluginPlaces(directory)で提供したディレクトリのリストをチェックする必要があると思いました。

これがユーザーのファイルシステム上のすべてのプラグインを見つける理由はありますか(ユーザーが指定したプラグインディレクトリに関係なく)?

ありがとうございました

4

1 に答える 1

0

さて、私は犯人を理解しました。YAPSY PluginManagerがどのように機能するかを詳しく調べた後、これは私の側にあったようです。PluginManager.locatePlugin()は指定されたディレクトリを調べますが、os.walk(指定されたパス)を使用して、指定されたパスの下にあるすべてのフォルダをチェックします。

知らないうちに、「C:\ Documents andSettings \ achilds」を参照するようにディレクトリを設定し、プラグインを「C:\ Documents andSettings \ achilds\Desktop」という場所にあるデスクトップに配置しました。そのため、PluginManager.locatePlugin()は設計されたとおりに実行し、「C:\ Documents andSettings \ achilds」内のすべてのディレクトリを検索して、デスクトップに配置したディレクトリを見つけました。

于 2012-06-27T21:21:32.167 に答える