如何在Python中猴子修补__init__模块?
我知道,这样做不太好。不过我想知道,是否可以劫持一个Python模块的__init__
模块,把它替换成我自己的。
我之所以问这个,是因为我需要阻止一个django库启动它的某些初始化过程,这些过程在我们的配置下会导致崩溃。
没错,修复这个django库并提交补丁是更好的办法。我确实在和作者联系这件事。但现在,我需要一个快速的解决方案。
2 个回答
0
你可以直接编辑 __init__.py
这个文件。没有什么会阻止你这么做,只要你操作得当,就不会出现什么问题。
4
一种劫持导入过程的方法是,在你想要修改的模块之前,先在另一个模块中模拟导入。你可以把想要的内容放进 sys.modules
,用模块的名字作为键。当真正需要导入原始模块时,Python会在 sys.modules
中找到这个条目,然后直接使用它。不过,如果导入是以某种特殊方式进行的,这个方法可能就不管用了。
另一方面,你也可以直接复制原始项目,然后按照自己的需求进行修改。