qué para módulo modulos lista librerias libreria instalar importar descargar clases bibliotecas python

para - modulos python 3



Reimportar un módulo en python mientras es interactivo (3)

De hecho, en Python 3 el módulo imp está marcado como DEPRECATED. Bueno, al menos eso es cierto para 3.4.

En su lugar, debe utilizarse la función de importlib módulo importlib :

reload

Pero tenga en cuenta que esta biblioteca tuvo algunos cambios en la API con las dos últimas versiones menores.

Sé que se puede hacer, pero nunca recuerdo cómo.

¿Cómo puedes reimportar un módulo en python? El escenario es el siguiente: Importe un módulo de forma interactiva y hago pequeños retoques con él, pero luego me encuentro con un error. Arreglo el error en el archivo .py y luego quiero volver a importar el módulo fijo sin salir de Python. Cómo puedo hacerlo ?


En Python 3, reload ya no es una función incorporada.

Si está usando python 3.4+, debería usar reload desde la biblioteca importlib lugar:

import importlib importlib.reload(some_module)

Si está utilizando python 3.2 o 3.3, debe:

import imp imp.reload(module)

en lugar. Consulte http://docs.python.org/3.0/library/imp.html#imp.reload

Si está usando ipython , definitivamente considere usar la extensión de autoreload :

%load_ext autoreload %autoreload 2


Esto debería funcionar:

reload(my.module)

De los documentos de Python.

Recargar un módulo previamente importado. El argumento debe ser un objeto de módulo, por lo que se debe haber importado correctamente antes. Esto es útil si ha editado el archivo fuente del módulo usando un editor externo y quiere probar la nueva versión sin dejar el intérprete de Python.

Si está ejecutando Python 3.4 y superior, sí import importlib , luego haga importlib.reload(nameOfModule) .

No olvide las advertencias de usar este método:

  • Cuando se recarga un módulo, se conserva su diccionario (que contiene las variables globales del módulo). Las redefiniciones de nombres anularán las definiciones antiguas, por lo que generalmente esto no es un problema. Si la nueva versión de un módulo no define un nombre que fue definido por la versión anterior, la definición anterior permanece.

  • Si un módulo importa objetos de otro módulo usando from ... import ... , llamar a reload() para el otro módulo no redefine los objetos importados de él. Una forma de evitar esto es volver a ejecutar la instrucción from, otro es para usar nombres import y calificados ( module.*name* ) en su lugar.

  • Si un módulo crea una instancia de las instancias de una clase, volver a cargar el módulo que define la clase no afecta a las definiciones de los métodos de las instancias; continúan usando la definición de la clase anterior. Lo mismo es cierto para las clases derivadas.