example - python import from parent directory
¿Cómo desimportar un módulo de Python que ya está importado? (2)
Soy bastante nuevo con NumPy / SciPy. Pero en estos días, comencé a usarlo muy activamente para el cálculo numérico en lugar de usar Matlab.
Para algunos cálculos simples, lo hago solo en el modo interactivo en lugar de escribir un script. En este caso, ¿hay alguna forma de anular la importación de algunos módulos que ya se importaron? Es posible que no sea necesario unimportar cuando escribo programas en Python, pero en el modo interactivo, es necesario.
No hay forma de descargar algo una vez que lo hayas importado. Python guarda una copia del módulo en un caché, por lo que la próxima vez que lo importe no tendrá que volver a cargarlo y reinicializarlo nuevamente.
Si todo lo que necesita es perder el acceso a él, puede usar del
:
import package
del package
Si ha realizado un cambio en un paquete y desea ver las actualizaciones, puede reload
a reload
. Tenga en cuenta que esto no funcionará en algunos casos, por ejemplo, si el paquete importado también necesita volver a cargar un paquete del que depende. Debe leer la documentación pertinente antes de confiar en esto.
Para versiones de Python hasta 2.7, reload
es una función incorporada:
reload(package)
Para las versiones 3.0 a 3.3 de Python puede usar imp.reload
:
import imp
imp.reload(package)
Para las versiones 3.4 y superiores de Python puede usar importlib.reload
:
import importlib
importlib.reload(package)
Si bien no debe preocuparse por "quitar la import
" de un módulo en Python, normalmente puede simplemente disminuir la referencia al módulo o función import
usando del
:
>>> import requests
>>> dir()
[''__builtins__'', ''__doc__'', ''__name__'', ''__package__'', ''readline'', ''requests'', ''rlcompleter'']
>>> del requests
>>> dir()
[''__builtins__'', ''__doc__'', ''__name__'', ''__package__'', ''readline'', ''rlcompleter'']
>>>
Tenga en cuenta que le recomendaría que no se preocupe por esto, ya que la sobrecarga de una importación no utilizada es casi trivial: atravesar una entrada adicional en sys.modules
no es nada comparado con la falsa seguridad que del some_module
brindará del some_module
(considere si el __init__
hace algo configuración o se ejecutó from X import *
).