Usando módulos recién instalados sin reiniciar una sesión interactiva

Durante una sesión interactiva larga (usando ipython) a veces necesito usar un módulo que aún no tengo instalado.

Después de instalar el nuevo módulo, ese módulo se vuelve importante en nuevas sesiones interactivas, pero no en la sesión que se estaba ejecutando antes de la instalación. No quisiera reiniciar la sesión debido a todas las variables en la memoria con las que estoy trabajando …

¿Cómo puedo obtener una sesión ejecutada anteriormente para importar el nuevo módulo?

Hay dos maneras de importar cosas manualmente en Python (dependiendo de su versión de Python).

# Python2 import os os.chdir('/path') handle = __import__('scriptname') #without .py handle.func() 

O puedes hacer:

 # Python3.3+ import importlib.machinery loader = importlib.machinery.SourceFileLoader("namespace", '/path/scriptname.py') #including .py handle = loader.load_module("namespace") handle.func() 

Esto funciona de forma un poco diferente en la versión anterior de Python3. No tengo tiempo ni acceso para instalar versiones anteriores ahora, pero sí recuerdo algunos problemas al intentar importar y, especialmente, volver a cargar módulos en versiones anteriores.

Para volver a cargar estos módulos en caso de que cambien (solo para elaborar esta respuesta):

 # Python2 reload(handle) 

 # Python3 import imp imp.reload(handle)