プラグイン システムのバックエンドとしてYapsyを使用するプログラムに取り組んでいます。ユーザーは独自のプラグインを作成し、実行時にロードできます。ロードされたすべてのプラグインをそれぞれ独自のメニュー項目として表示するメニューがあります。また、プログラムには 2 つの既製のプラグインも提供しています。これらの事前に作成されたプラグインは、Eclipse を介してプログラムを実行すると問題なくロードされます (つまり、メニューに両方のプラグインが表示されます)。ただし、cx_Freeze を使用して実行可能ファイルを作成した後、何らかの理由でプラグインが正しく読み込まれません。両方のプラグインが同じディレクトリにあり、コードが変更されていないため、最初のプラグインのみが見つかりました。Yapsyに何か問題があるのだろうか?プラグインが 1 つしか見つからないのはなぜでしょうか。
既製のプラグインを取得する方法の例を次に示します。
default_dir = os.path.expanduser('~') + os.sep + "plugins"
if xml.get_plugin_directory() == "":
directory = [default_dir] # no user specified directory
else:
directory = [default_dir, xml.get_plugin_directory()] # user specified dir too
# Load the plugins from the specified plugin directory/s.
manager = PluginManager()
manager.setPluginPlaces(directory)
manager.setPluginInfoExtension('plugin')
manager.collectPlugins()
for plugin in manager.getAllPlugins():
...
ご覧のとおり、デフォルトのディレクトリを設定し (常に作成されているはずであり、確認するためにこれをテストしました)、プラグインの場所をそのディレクトリまたはそのディレクトリとユーザー指定のディレクトリに設定しますyapsy.PluginManager().setPluginPlaces(directory)
。デフォルトのプラグインの場所は、私の Eclipse ワークスペースにはありません。それは別の場所に存在します。前に述べたように、これは Eclipse を介してプログラムを実行する場合は問題なく動作しますが、実行可能ファイルを作成すると、プラグインが 1 つしか見つかりません。プラグインが見つからないというエラーが発生することを期待しますが、一方が実際に見つかり、もう一方が見つからないというのは奇妙です。また、さらにテスト プラグイン ファイルをデフォルト ディレクトリに追加すると、これらが検出されます。Yapsy が 2 番目のプラグインを完全にスキップするかのようです (実行可能ファイルの実行時のみ)。
この動作が発生する理由はありますか?
ありがとう、アダム