25

After import functions into ipython, how do I reload them when I have modified them outside of ipython ?

0

3 Answers 3

33

Python 2:

reload(module)

Python 3:

from importlib import reload
reload(module)

Where module is the file with your functions.

Sign up to request clarification or add additional context in comments.

5 Comments

This is correct. However, reload() does not automatically recurse to imports-of-imports, so if you modify something that is imported indirectly, it won't get reloaded.
@Amber Yes, that's a limitation. You can do x = module.x or a function which does that for you if you need to rebind those names
Or you can just reload(sys.modules['foo_module']) to reload foo_module.
@Amber: IPython actually offers a dreload function which works recursively.
python3 need to do from importlib import reload first
6

you can also use autoreload, so that the modules you are working on are automatically reloaded at each statement, pretty handy for debugging, see:

Autoreload of modules in IPython

Comments

3

Use the following link to read more about reload built-in function. Please find sample below:

import controls.grid
reload(controls.grid)

Note that reload is 'Reload a previously imported module. The argument must be a module object, so it must have been successfully imported before.' and 'When a module is reloaded, its dictionary (containing the module’s global variables) is retained. Redefinitions of names will override the old definitions, so this is generally not a problem. If the new version of a module does not define a name that was defined by the old version, the old definition remains.'

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.