2015-04-07 183 views
2

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

/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文件中都试过了,但它不起作用。还是有另一种方式?

+0

看看http://stackoverflow.com/questions/3012473/how-do-i-override-a-python-import 也许这是你在找什么。 – WWhisperer

+0

是的,这就是我从中获得sys.module思想的地方。但他们只是在一个文件中覆盖它。 – linsenfips

回答