我想知道是否有可能在同一个Python会话中使用同一个Python包的多个版本。
例如,假设我想要调查Gensim-3.7.3和Gensim-3.8.1之间的可能差异,那么唯一的方法是创建两个virtualenv,启动两个单独的Python会话,保存结果,并将结果加载到其中一个会话(或第三个会话)中?
发布于 2019-10-17 14:06:52
有了importlib
,一个虚拟环境,显式的路径,并在How to import a module given the full path?借用@sebastian-rittau的答案,一个模块的两个版本可以被加载。示例:
from importlib.util import spec_from_file_location, module_from_spec
from os.path import expanduser
name = "gensim"
paths = [
expanduser('~/envs/gensim-3.8.0/lib/python3.6/site-packages/gensim/__init__.py'),
'/usr/local/lib/python3.6/dist-packages/gensim/__init__.py',
]
gensims = []
for path in paths:
spec = spec_from_file_location(name, path)
gensim = module_from_spec(spec)
spec.loader.exec_module(gensim)
gensims.append(gensim)
for gensim in gensims:
print(gensim.__version__)
结果是:
3.8.0
3.7.3
https://stackoverflow.com/questions/58433607
复制相似问题