環境
Windows10 Pro 64bit
Python 3.6.1

下記のモジュール構成だったとします。

main.py
A/
    __init__.py
    a.py
    b.py

A.a.func()はA.bでも使用されていますが、バグがあり修正する必要があります。ただし、モジュールA内のソースコード(A.a.py, A.b.py)はできれば編集したくありません。

そのため、main.py内で、A.bが使用するA.a.funcだけを差し替えたいのです。
しかし、main.py内で下記のように置き換えても、main.py内では置き換わりますが、A.b内で使用されるA.a.func()は置き換えることができませんでした。

# main.py
import A.a

def custom_func():
    return 0

setattr(A.a 'func', custom_func)

# A/b.py
from .a import func

func()      # <= 置き換わっていない

何か方法はないでしょうか?