9

I'm loading a submodule in python (2.7.10) with from app import sub where sub has a config variable. So I can run print sub.config and see a bunch of config variables. Not super complex.

If I change the config variables in the script, there must be a way to reload the module and see the change. I found a few instructions that indicated that reload(app.sub) would work, but I get an error:

NameError: name 'app' is not defined

And if I do just reload(sub) the error is:

TypeError: reload() argument must be module

If I do import app I can view the config with print app.sub.config and reload with reload(app)

-- if I do import app and then run

I found instructions to automate reloading: Reloading submodules in IPython

but is there no way to reload a submodule manually?

Community
  • 1
  • 1
Amanda
  • 10,799
  • 17
  • 59
  • 87

2 Answers2

9

With python3,I try this:

import importlib
import sys

def m_reload():
    for k,v in sys.modules.items():
        if k.startswith('your-package-name'):
            importlib.reload(v)
放課後
  • 716
  • 7
  • 14
0

When you from foo import bar, you now have a module object named bar in your namespace, so you can

from foo import bar

bar.do_the_thing()  # or whatever

reload(bar)

If you want some more details on how different import forms work, I personally found this answer particularly helpful, myself.

Community
  • 1
  • 1
6c1
  • 392
  • 2
  • 14