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?