5

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

我之所以这样问是因为我需要阻止 django lib 启动它的 init 进程的某些部分,使其与我们的配置一起崩溃。

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

4

2 回答 2

4

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

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

于 2011-02-02T17:23:15.847 回答
0

您可以只编辑__init__.py文件。没有什么能阻止你,如果你做对了,就不会发生任何坏事。

于 2011-02-02T17:12:53.027 回答