Le builtin imp.relaod() (juste reload pour Python 2.x) ne recharge que le les référence directes des imports : autrement le module rechargé lui même.
Si un module B import des objets de d'un module A et qu'on recharge les module A, les références à A dans le module B ne sont pas rechargées. Pour cela il faut recharger le module B également. En prenant soin de bien le recharger après A. Autrement dit il faut gérer un graph de dépendances.
C'est ce qu'aborde cet article dans le détail.