Estoy usando Python 3.2.2. Cuando escribo un programa simple, encuentro el problema.
>>> reload(recommendations)
Traceback (most recent call last):
File "<pyshell#6>", line 1, in <module>
reload(recommendations)
NameError: name 'reload' is not defined
¿Cómo debería hacerlo?
python
python-3.x
MindHacks
fuente
fuente
reload
.import recommendations
. ¿Por qué pensaste que necesitabas usarreload()
?reload
, desafortunadamente.with open('file', 'r', encoding='utf-8') as f: do_whatever
. No hay absolutamente ninguna necesidad de recargar () módulos en programas simples, o realmente en cualquier programa de Python.Respuestas:
Probablemente querías
importlib.reload()
.from importlib import reload
En Python 2.x, esto era incorporado , pero en 3.x, está en el
importlib
módulo.Tenga en cuenta que el uso
reload()
fuera del intérprete generalmente es innecesario, ¿qué estaba tratando de hacer aquí?fuente
imp
es un módulo, no un archivo. (Está integrado en el núcleo del intérprete y no corresponde a ningún archivo). Y sí, para usarloimp.reload
tienes que importarimp
, pero eso no es gran cosa.imp
donde lo usesreload()
, sí. Así es como funciona el espacio de nombres. ¿Por qué querría volver a cargar un módulo fuera del indicador interactivo de todos modos?Una actualización de la respuesta de @Gareth Latty.
imp
se depreció en Python 3.4. Ahora quieresimportlib.reload()
.from importlib import reload
fuente
Prueba
importlib.reload
.from importlib import reload reload(module_name)
fuente
Como han dicho otros, es necesario
importlib.reload(module)
o en algún momento anterior es necesariofrom importlib import reload
. Pero puede ocultarlofrom importlib import reload
en un archivo de inicialización. Asegúrese de quePYTHONSTARTUP
esté definido en su shell. Por ejemplo,Podría ser una línea razonable para agregar a su
~/.bash_profile
, si su shell es bash, y dependiendo de dónde almacene sus archivos de Python. (Si sigue estas instrucciones, inicie una nueva ventana de terminal en este punto para que se ejecute la línea). Luego, puede poner la líneafrom importlib import reload
en
~/python/startup.py
y sucederá automáticamente. (Nuevamente, si está siguiendo, comience una nueva sesión de Python en este punto). Esto puede parecer un poco complejo solo para resolver este problema, pero es algo que solo tiene que hacer una vez, y luego para cada problema similar en la línea de "Ojalá Python siempre hiciera esto", una vez que encuentre la solución, puede ponerla~/python/startup.py
y olvidarse de ella.fuente