У меня есть python script, который использует следующее для перезапуска:
python = sys.executable
os.execl(python, python, * sys.argv)
В большинстве случаев это работает нормально, но иногда перезапуск завершается с ошибкой без модуля с ошибкой. Примеры:
Traceback (most recent call last):
File "/usr/lib/python2.7/site.py", line 68, in <module>
import os
File "/usr/lib/python2.7/os.py", line 49, in <module>
import posixpath as path
File "/usr/lib/python2.7/posixpath.py", line 17, in <module>
import warnings
File "/usr/lib/python2.7/warnings.py", line 6, in <module>
import linecache
ImportError: No module named linecache
Traceback (most recent call last):
File "/usr/lib/python2.7/site.py", line 68, in <module>
import os
File "/usr/lib/python2.7/os.py", line 49, in <module>
import posixpath as path
File "/usr/lib/python2.7/posixpath.py", line 15, in <module>
import stat
ImportError: No module named stat
Изменить: я попытался gc.collect(), как было предложено andr0x, и это не сработало. Я получил ту же ошибку:
Traceback (most recent call last):
File "/usr/lib/python2.7/site.py", line 68, in <module>
import os
File "/usr/lib/python2.7/os.py", line 49, in <module>
import posixpath as path
ImportError: No module named posixpath
Изменить 2: Я пробовал sys.stdout.flush()
, и я все равно получаю ту же ошибку. Я заметил, что я получаю только 1-3 успешных перезапуска до возникновения ошибки.