获取2个python模块的独立实例

Dan*_*ple 14 python

我正在与以非OO方式编写的python 2.x API进行交互,它使用模块全局范围来处理一些内部状态驱动的东西.它在不再是单例的上下文中是必需的,修改原始代码(不是我们的代码)不是一种选择.

如果没有使用单独解释器的子进程运行,有没有什么方法可以关闭模​​块并与模块的多个实例交互(从而将其视为对象)?

我需要使用该模块来驱动2种不同的设置 - 它在内部似乎无法使用.

免责声明:请不要这样做.请在非常奇怪的情况下执行此操作 - 并尝试在执行此操作之前以其他方式更改情况.我这样做是为了应对在询问时无法改变的奇怪代码 - 不提供扩展更奇怪代码的方法.

phi*_*hag 13

只需从sys.modules以下位置删除模块:

>>> import sys
>>> import mod as m1
>>> m1.x = 1
>>> del sys.modules['mod']
>>> import mod as m2
>>> m2.x = 2
>>> m1.x
1
Run Code Online (Sandbox Code Playgroud)


Mik*_*bov 1

我个人没有使用过它,但似乎Exocet库可能会有所帮助。