假设我有模块foo.py
和bar.py
,并且在代码中都有import baz
语句。
我想编写一个导入钩子,我可以插入sys.meta_path
,知道baz
是从foo
还是从bar
导入。
我之所以这样做是因为我希望我的应用程序能够加载插件并保持其依赖关系,这是我可以通过在Java中使用单独的ClassLoader
实例的方式。这样,插件foo
和插件bar
就可以捆绑不同版本的库baz
而不会发生冲突。我的意思是通过改变导入机制来为import baz
语句生成单独的模块,具体取决于该语句的来源。
如果有人有更好的方法,请随时在答案中提出建议。