覆盖Python模块

时间:2015-04-07 11:55:17

标签: python python-2.7

我想覆盖现有Python应用程序的模块。该应用程序是在模块和子模块中构建的,我已经注册了一个扩展。在扩展中,我想提供一个覆盖原始模块(module.py)的模块(new_module.py)。因此,每当另一个模块导入它时,我的版本就会被使用。

/application
    __init__.py
    folder_a
    folder_b
       __init__.py
       folder_b_a
           __init__.py
           module.py
/extension
    __init__.py
    new_module.py

我想这可以通过在sys模块中设置来实现,如下所示:

import extension.new_module
sys.modules["application.folder_b.folder_b_a.module"] = extension.new_module

但我不知道在哪里放这些线。我在所有的init文件中都尝试过它,但它不起作用。或者还有另一种方式吗?

1 个答案:

答案 0 :(得分:0)

此处记录:https://docs.python.org/2/using/cmdline.html#envvar-PYTHONSTARTUP

强制python通过环境变量加载extension,并在该扩展名import sys中加载sys.modules