$ python
>>> import myapp
>>> reload(myapp)
<module 'myapp' from 'myapp.pyc'>
>>>
ctrl + Den Python intérprete
$ python
>>> from myapp import *
>>> reload(myapp)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'myapp' is not defined
¿Por qué este se comporta de manera diferente? ¿Cómo puedo volver a cargar cuando uso from myapp import *
?
La razón por la que utilizo * reload() * es porque modifico el código fuente del módulo y lo pruebo y el motivo por el que uso * de myapp import * es porque me ahorra tipeo. – xralf
'reload' se debe usar con un * lote * de precaución. Se comporta inesperadamente de muchas maneras, la peor de las cuales es que existen clases en muchas versiones dentro de la máquina virtual, dependiendo de si tiene viejas instancias de clases cargadas. 'reload' se eliminó de Python 3 por ese motivo. A menudo es mucho más fácil configurar un pequeño script para configurar todos los módulos que necesita y luego colocarlo en un shell usando 'import code; code.interact (local = locals()) '.El intérprete de Python se inicia muy rápido, por lo que suele ser incluso más rápido que buscar 'reload' en el historial de readline. –
@NiklasB. Gracias por los consejos, pero no puedo imaginar esto sin algún ejemplo. Si es posible y tiene tiempo para escribir más sobre esto, por favor ponga un ejemplo a la respuesta. O puedo crear una nueva pregunta basada en tu comentario, si no estás en contra. – xralf