Estoy tratando de volver a cargar un módulo que ya importé en Python 3. Sé que solo necesita importar una vez y ejecutar el import
comando nuevamente no hará nada.
Ejecutar reload(foo)
es dar este error:
Traceback (most recent call last):
File "(stdin)", line 1, in (module)
...
NameError: name 'reload' is not defined
¿Qué significa el error?
python
python-3.x
Precio de Lonnie
fuente
fuente
reload
en un guión son muy raros, y es poco probable que los que emplean ese tipo de arte oscuro estén leyendo este comentario. Sin embargo, si está desarrollando un módulo y está utilizando una consola IPython para probarlo de forma interactiva,reload
puede ser útil en ese flujo de trabajo. Sin embargo, como dijo @Evan, tenga cuidado con los efectos secundarios del tiempo de importación. En general, diría que evitereload
usar los módulos de otra persona.reload
Lo suyo tiene sentido durante el tiempo de diseño.Para> = Python3.4:
Para <= Python3.3:
Para Python2.x:
Use la
reload()
función incorporada .fuente
fuente
importlib
en su lugar.Para ampliar las respuestas escritas anteriormente, si desea una solución única que funcione en las versiones 2 y 3 de Python, puede usar lo siguiente:
fuente
Recomiendo usar el siguiente fragmento, ya que funciona en todas las versiones de Python (requiere
six
):fuente
Para compatibilidad con python2 y python3, puede usar:
fuente
Si no desea utilizar libs externas, entonces una solución es recrear el método de recarga de python 2 para python 3 como se muestra a continuación. Use esto en la parte superior del módulo (supone python 3.4+).
Por cierto, la recarga es muy necesaria si usa archivos de Python como archivos de configuración y desea evitar reinicios de la aplicación .....
fuente