2015-04-07 240 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

回答