Это работает для меня.Я создал файл для выполнения другим файлом, a.py
:
$ cat a.py
import atexit
@atexit.register
def myexit():
print 'myexit in a.py'
И затем b.py
для вызова execfile:
$ cat b.py
import atexit
@atexit.register
def b_myexit():
print 'b_myexit in b.py'
execfile('a.py')
Когда я запускаю b.py
, обаВызываются зарегистрированные функции:
$ python b.py
myexit in a.py
b_myexit in b.py
Обратите внимание, что оба этих скрипта были в одном каталоге, когда я их запускал.Если ваш a.py
находится в отдельном каталоге, как упоминал Райан Гинстром в своем ответе, вам нужно будет использовать полный путь к нему, например:
execfile('/path/to/a.py')