$ python
>>> import myapp
>>> reload(myapp)
<module 'myapp' from 'myapp.pyc'>
>>>
Ctrl + DReload интерпретатор Python
$ python
>>> from myapp import *
>>> reload(myapp)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'myapp' is not defined
Почему это ведет себя по-другому? Как я могу перезагрузить при использовании from myapp import *
?
Причина, по которой я использую * reload() *, заключается в том, что я меняю исходный код модуля и проверяю его, и причина, по которой я использую * из myapp import *, заключается в том, что он меня печатает. – xralf
'reload' должен использоваться с * лотом *. Это ведет себя неожиданно во многих отношениях, худшим из которых является то, что классы существуют во многих версиях внутри виртуальной машины, в зависимости от того, существуют ли у вас старые экземпляры перезагруженных классов. По этой причине из Python 3 был удален «reload». Часто намного проще настроить небольшой скрипт, устанавливающий все необходимые вам модули, а затем переходить в оболочку с использованием кода импорта; code.interact (местные жители =()) '.Интерпретатор Python запускается очень быстро, поэтому обычно это происходит быстрее, чем поиск «перезагрузки» в истории чтения. –
@NiklasB. Спасибо за совет, но я не могу представить это без какого-либо примера. Если это возможно, и у вас есть время, чтобы написать об этом больше, отправьте пример ответа. Или я могу создать новый вопрос, основанный на вашем комментарии, если вы не против. – xralf