Ваше сообщение об ошибке C:\...\python.exe
предполагает, что вы используете систему Windows.
Ошибка вашего первого скрипта, поскольку в Windows os.execv()
не знает, как обрабатывать скрипты Python, поскольку первая строка (#!/usr/bin/python
) не оценивается и не указывает на действительный интерпретатор Python для большинства систем Windows. Фактически, os.execv()
пытается выполнить простой текстовый файл, который содержит код Python, но система этого не знает.
Ваш второй скрипт не может правильно получить имя файла вашего сценария Python foo.py
. Мне непонятно, почему это происходит, но сообщение об ошибке предполагает, что может возникнуть проблема с пространством в вашем названии каталога Math Project
.
В качестве возможного решения проблемы, попробуйте заменить строку
os.execv(sys.executable, [sys.executable] + sys.argv)
следующим:
os.execv(sys.executable,
[sys.executable, os.path.join(sys.path[0], __file__)] + sys.argv[1:])
Эта линия пытается восстановить правильный путь к сценарию Python, и передать его в качестве аргумента интерпретатору Python.
В качестве примечания: Имейте в виду, что делает ваш скрипт: он безоговорочно запускает другой экземпляр сам по себе. Это приведет к бесконечному циклу, который в конечном итоге приведет к снижению вашей системы. Убедитесь, что ваш реальный скрипт содержит условие прерывания.
EDIT:
Проблема заключается, в самом деле, с пространством в пути, и обходной путь, который я упомянул, не поможет. Однако модуль subprocess
должен позаботиться об этом. Используйте его так:
import os
import sys
import subprocess
subprocess.call(["python", os.path.join(sys.path[0], __file__)] + sys.argv[1:])
Такая же ошибка. C: \ ... \ python.exe: невозможно открыть файл 'C: \ ... \ Math': [Errno 2] Нет такого файла или каталога –
Отредактированная часть работает как шарм! Спасибо! –