【问题标题】:How to import two versions of the same python module at the same time?如何同时导入同一个python模块的两个版本?
【发布时间】:2015-05-23 12:19:55
【问题描述】:

假设我有两个版本的 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 中使用钩子?我没弄明白。

或者是否有删除导入模块的缓存?

【问题讨论】:

  • 你解决过这个问题吗?你接受了一个答案,但声称它不起作用,所以这很奇怪。我现在也面临同样的问题。
  • 仍在寻找答案...

标签: python python-import python-module


【解决方案1】:

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

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

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

【讨论】:

  • 不幸的是,这是不可能的。因为在my_lib里面,还会有一些其他的文件import my_lib.XXX.XXX。您的解决方案将导致内部导入失败ImportError: No module named my_lib.XXX.XXX
  • 这是不可接受的。我不想修改代码,其实这些代码不是我写的
【解决方案2】:

【讨论】:

  • 好像不行,我想同时导入两个版本的模块。另外,我在apache2服务器上运行这个python,如何调用脚本不是我控制的
  • 我想问sys.meta_path 是否可行的解决方案的人知道虚拟环境是什么。
猜你喜欢
  • 1970-01-01
  • 2017-01-20
  • 1970-01-01
  • 2021-04-20
  • 1970-01-01
  • 2018-06-17
  • 2015-07-26
  • 2014-01-03
  • 1970-01-01
相关资源
最近更新 更多