2024-05-23 14:31:46 发布
网友
我知道,我知道,这很肮脏。我想知道是否有可能劫持Python模块的__init__模块来替换它。在
__init__
我这么问是因为我需要防止django lib启动它的init进程的某些部分,这会使它与我们的配置一起崩溃。在
是的,最好修复django库并返回一个补丁。是的,我正在和作者联系。但现在,我需要一个快速的解决办法。在
劫持导入过程的一种方法是在导入发生之前的某个时间模拟导入,在另一个模块中模拟导入,该模块在您要monkey patch之前导入。在sys.modules中插入您想要的任何内容,并将模块的名称作为键,当需要导入原始模块时,Python将在sys.modules中找到一个条目并使用它。如果导入是以某种神奇的方式完成的,这可能行不通。在
sys.modules
另一方面,你总是可以复制原始项目,然后根据自己的喜好进行修补。在
您只需编辑__init__.py文件。没有什么能阻止你,如果你做对了,什么坏事也不会发生。在
__init__.py
劫持导入过程的一种方法是在导入发生之前的某个时间模拟导入,在另一个模块中模拟导入,该模块在您要monkey patch之前导入。在
sys.modules
中插入您想要的任何内容,并将模块的名称作为键,当需要导入原始模块时,Python将在sys.modules
中找到一个条目并使用它。如果导入是以某种神奇的方式完成的,这可能行不通。在另一方面,你总是可以复制原始项目,然后根据自己的喜好进行修补。在
您只需编辑
__init__.py
文件。没有什么能阻止你,如果你做对了,什么坏事也不会发生。在相关问题 更多 >
编程相关推荐