Using Newly Installed Modules Without Restarting An Interactive Session
During a long interactive session (using ipython) I sometimes need to use a module which I don't already have installed. After installing the new module, that module becomes import
Solution 1:
There's two ways of manually importing things in Python (depending on your python version).
# Python2
import os
os.chdir('/path')
handle = __import__('scriptname') #without .py
handle.func()
Or you can do:
# Python3.3+
import importlib.machinery
loader = importlib.machinery.SourceFileLoader("namespace", '/path/scriptname.py') #including .py
handle = loader.load_module("namespace")
handle.func()
This works a bit differently in previous version of Python3, Don't have the time or access to install older versions now but I do remember hitting a few issues when trying to import and especially reload modules in earlier versions.
To reload these modules in case they change (just to elaborate this answer):
# Python2
reload(handle)
# Python3
import imp
imp.reload(handle)
Solution 2:
Here's a slightly simpler answer for top-level modules in python3:
# import it to use it
import modulename
# reimport it with importlib
import importlib
print(importlib.reload(__import__("modulename")))
Worked for me on python 3.9. I think it only reimports the top-level module, so you'd want the SourceFileLoader solution for child modules.
Post a Comment for "Using Newly Installed Modules Without Restarting An Interactive Session"