python - 如何在 Python 中猴子修补 __init__ 模块?

标签 python django init monkeypatching

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

我问这个是因为我需要阻止 django 库启动它的初始化进程的某些部分,这会导致我们的配置崩溃。

是的,最好修复 Django 库并发回补丁。是的,我正在与作者联系。但现在,我需要快速修复。

最佳答案

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

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

关于python - 如何在 Python 中猴子修补 __init__ 模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4877457/

相关文章:

python - 带有 Rest-framework 序列化器的 Django-haystack 给出的结果 None

python - 我如何删除 Plone 4 中的自定义灵巧对象?

python - 识别 Django Rest Framework 中的唯一匿名用户

python - Django _view_() 采用 1 个位置参数,但给出了 2 个

tcp - lwip 初始化网络接口(interface)

python - 多台机器上的单个 Anaconda 环境

Python、comtypes 和 ArcObjects : Error creating AppROT object

python - Django select_related 过滤器

ios - swift 中的 UIView 初始方法总是显示错误

iphone - InitWithNibName 和 viewDidLoad?