How to unimport a python module which is already imported?

chanwcom picture chanwcom · Aug 26, 2015 · Viewed 60.5k times · Source

I'm quite new with NumPy/SciPy. But these days, I've started using it very actively for numerical calculation instead of using Matlab.

For some simple calculations, I do just in the interactive mode rather than writing a script. In this case, are there any ways to unimport some modules which was already imported? Unimporting might not needed when I write python programs, but in the interactive mode, it is needed.

Answer

Mark Ransom picture Mark Ransom · Aug 26, 2015

There's no way to unload something once you've imported it. Python keeps a copy of the module in a cache, so the next time you import it it won't have to reload and reinitialize it again.

If all you need is to lose access to it, you can use del:

import package
del package

If you've made a change to a package and you want to see the updates, you can reload it. Note that this won't work in some cases, for example if the imported package also needs to reload a package it depends on. You should read the relevant documentation before relying on this.

For Python versions up to 2.7, reload is a built-in function:

reload(package)

For Python versions 3.0 to 3.3 you can use imp.reload:

import imp
imp.reload(package)

For Python versions 3.4 and up you can use importlib.reload:

import importlib
importlib.reload(package)