Перезагрузка измененного файла Python в emacs оболочке Python

Я имел большой успех с хорошей интеграцией между хранилищем SourceGear и FogBugz.

Сборка мс для автоматизации сборки удовлетворяет мои потребности.

7
задан justinhj 29 November 2009 в 19:03
поделиться

2 ответа

Мне кажется, это работает:

Создайте файл (в вашем PYTHONPATH) с именем test.py

def foo():
    print('bar')

Затем в оболочке python emacs (или лучше еще оболочка ipython), введите

>>> import test
>>> test.foo()
bar

Теперь измените test.py:[1223 impression

5
ответ дан 6 December 2019 в 09:20
поделиться

Хотя reload () действительно работает, он не меняет ссылки на классы, функции и другие объекты, поэтому старую версию легко увидеть. Наиболее последовательным решением является замена reload () либо exec (что означает отказ от использования import в первую очередь) или полный перезапуск интерпретатора.

Если вы все-таки хотите продолжать использовать reload, будьте очень осторожны с тем, как вы ссылаетесь на вещи из этого модуля, и всегда используйте полное имя. Например, импортируйте модуль и используйте имя модуля вместо из имени импорта модуля . И даже если вы будете осторожны, вы все равно столкнетесь с проблемами со старыми объектами, что является одной из причин, по которой reload () отсутствует в 3.x.

15
ответ дан 6 December 2019 в 09:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: