如何同时导入同一个python模块的两个版本?

How to import two versions of the same python module at the same time?

假设我有两个版本的 python 包,比如 "lib"。一个在文件夹 ~/version1/lib 中,另一个在 ~/version2/lib 中。我试图通过这样做在一个会话中加载两个包:

sys.path.insert(0, '~/version1')
import lib as a

sys.path.insert(0, '~/version2')
import lib as b

但它不起作用,因为缓存,b 将与 a 相同。

有办法吗?也许在 sys.meta_path 中使用钩子?没看懂

或者有没有办法删除导入模块的缓存?

您必须从更高一级导入它:

import version1.my_lib as a
import version2.my_lib as b

还要确保在所有文件夹中都有 __init__.py