Старый кодекс, все еще выполняемый в ipython после того, как, файлы были изменены

In file1.py:

def foo():
    import file2
    print "I'm the old file1.py"
    file2.bar()

if __name__ == '__main__':
    foo()

In file2.py

print "I'm the old file2.py"

def bar():
    print "I'm in the old file2.bar()"

On line 5 интерактивного сеанса ниже, после внесения изменений в file1.py и file2.py изменения всех трех вхождений слова old на new , код new в file2.py по-прежнему не используется.

wim@wim-ubuntu:~/sandpit$ ipython
>>> run file1.py
I'm the old file2.py
I'm the old file1.py
I'm in the old file2.bar()
>>> !rm file2.pyc 
>>> # modify file1, file2
>>> run file1.py
I'm the new file1.py
I'm in the old file2.bar()

Откуда берется старый код из file2.py?

Я должен что-то неправильно понять, потому что я подумал (из справки ipython на run ):

Файл выполняется в пространстве имен, первоначально состоящем только из __ name __ = = '__ main __' и sys.argv построены, как указано. Таким образом, видит его среду, как если бы он был запущен как автономная программа

Я удалил файл .pyc и вижу по команде , которая , что в пространстве имен нет модуля file2. Но почему импорт не выполняется снова при повторном запуске файла1?

5
задан wim 25 July 2015 в 12:44
поделиться