我知道,我知道,它很脏。我想知道是否可以劫持 Python 模块的 __init__
模块以用您自己的模块替换它。
我问这个是因为我需要阻止 django 库启动它的初始化进程的某些部分,这会导致我们的配置崩溃。
是的,最好修复 Django 库并发回补丁。是的,我正在与作者联系。但现在,我需要快速修复。
最佳答案
劫持导入过程的一种方法是在导入发生之前的某个时间模拟导入,在另一个模块中,该模块在您要进行猴子修补的模块之前导入。将您想要的任何内容插入 sys.modules
以模块名称作为键,当需要导入原始模块时,Python 将在 sys.modules
中找到一个条目并且只会使用它。如果以某种神奇的方式完成导入,这可能不起作用。
另一方面,您始终可以只复制原始项目并根据自己的喜好对其进行修补。
关于python - 如何在 Python 中猴子修补 __init__ 模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4877457/