foo.py
モジュールがありbar.py
、両方ともimport baz
コードにステートメントがあるとしましょう。
が からインポートされているか、 からインポートされsys.meta_path
ているかを認識できる挿入可能なインポート フックを作成したいと考えています。baz
foo
bar
ClassLoader
これを行う理由は、Java で個別のインスタンスを使用することでできるように、アプリでプラグインを読み込んで依存関係を分離できるようにしたいからです。そうすれば、プラグインfoo
とプラグインは異なるバージョンのライブラリを競合することなくbar
バンドルできます。baz
これを達成する方法は、インポート メカニズムを変更してimport baz
、そのステートメントがどこから来たかに応じてステートメント用の個別のモジュールを生成することです。
誰かがこれを行うためのより良い方法を持っている場合は、回答でそれを提案してください。