如何在Python中monkey-patch\uu-init\uu-module?

2024-04-20 03:30:58 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我这么问是因为我需要防止django lib启动它的init进程的某些部分,这会使它与我们的配置一起崩溃。在

是的,最好修复django库并返回一个补丁。是的,我正在和作者联系。但现在,我需要一个快速的解决办法。在


Tags: 模块django进程initlib作者解决办法
2条回答

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

另一方面,你总是可以复制原始项目,然后根据自己的喜好进行修补。在

您只需编辑__init__.py文件。没有什么能阻止你,如果你做对了,什么坏事也不会发生。在

相关问题 更多 >