如何同时导入同一个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
。
- 可以考虑使用python virtual environment。
- 激活所需的环境并运行您的代码。
假设我有两个版本的 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
。
- 可以考虑使用python virtual environment。
- 激活所需的环境并运行您的代码。