Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to unimport a python module which is already imported?

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.

like image 505
chanwcom Avatar asked Aug 26 '15 18:08

chanwcom


People also ask

How do you undo an import in Python?

To remove an imported module in Python: Use the del statement to delete the sys reference to the module. Use the del statement to remove the direct reference to the module.

How do you check if a module is already imported in Python?

Use: if "sys" not in dir(): print("sys not imported!")

What happens when a Python module is imported?

When a module is first imported, Python searches for the module and if found, it creates a module object 1, initializing it. If the named module cannot be found, a ModuleNotFoundError is raised. Python implements various strategies to search for the named module when the import machinery is invoked.


1 Answers

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 

Note that if you then reimport the package, the cached copy of the module will be used.

If you want to invalidate the cached copy of the module so that you can re-run the code on reimporting, you can use sys.modules.pop instead as per @DeepSOIC's answer.

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) 
like image 53
Mark Ransom Avatar answered Sep 28 '22 05:09

Mark Ransom