実行時にプラグインパッケージをロードして実行できるPython GUIがあります。プラグインパッケージは、単にプラグインコードに必要なすべての追加ライブラリを含むPythonパッケージです。これらの追加ライブラリは、プラグインのsite-packagesサブフォルダに格納されます。代表的なプラグインのファイル構造は次のようになります:使用されているプラグインに応じて異なるバージョンのPythonパッケージを使用
myplugin/__init__.py
myplugin/plugin_main.py
myplugin/site-packages/foolib/__init__.py
myplugin/site-packages/foolib/foo_main.py
私はplugin_mainにこのコードを追加することによって、PYTHONPATHへのsite-packagesサブディレクトリを追加しましたfoolibのようなライブラリをインポートすることができplugin_main.pyにするために。 py:
import sys
packages_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), "site-packages")
sys.path.insert(1, packages_path)
import foolib
これまでのところ、とても良いです。これは基本的に動作します。問題は、GUIがfoolibの独自のバージョンをインポートする必要がある2番目のプラグインを読み込んだ場合、実際に最初のプラグインのfoolibバージョンが代わりに使用されることです。言い換えれば、別のプラグインがsite-packagesサブフォルダに異なるバージョンのfoolibを持っていても、常にGUIで使用されるのと同じバージョンです。
私が必要とするのは、GUIがmypluginをロードするときに、myplugin/site-packagesからfoolibを使用する必要があるということです。 myotherpluginを後で読み込む場合は、myplugin/site-packagesからではなく、myotherplugin/site-packagesのfoolibを使用する必要があります。私は問題を明確にしたかったと思う。
impパッケージはこの場合に役立ちますか?