如何在Python中修补__init__模块?

时间:2011-02-02 17:08:21

标签: python django init monkeypatching

我知道,我知道,这很脏。我想知道是否有可能劫持Python模块的__init__模块以替换它自己。

我问这是因为我需要阻止django lib启动它的初始进程的某些部分,使其崩溃我们的配置。

是的,最好修复django lib并发回补丁。是的,我和作者有联系。但就目前而言,我需要快速解决。

2 个答案:

答案 0 :(得分:4)

劫持导入过程的一种方法是在导入过程之前的某个时间模拟导入,在另一个要导入猴子补丁的模块之前导入。将您想要的任何内容插入到sys.modules中,并将模块名称作为键,当需要导入原始模块时,Python将在sys.modules中找到一个条目并将使用它。如果以某种神奇的方式完成导入,这可能无效。

另一方面,您可以随时复制原始项目并根据自己的喜好进行修补。

答案 1 :(得分:0)

您只需编辑__init__.py文件即可。没有什么可以阻止你,如果你这样做,没有什么不好的事情会发生。