Вопрос:
Я пытаюсь написать программу, которая открывает окно gnome-terminal и выполняет в нем файл python.
Когда я вызываю подпроцесс gnome-terminal с модулем подпроцесса следующим образом:
import subprocess subprocess.call([‘gnome-terminal’, ‘-x’, ‘python3 ‘+filename])
Я получаю следующую ошибку:
Failed to execute child process «python3 /home/user/Documents/test.py» (No such file or directory)
/home/user/Documents/test.py я попытался /home/user/Documents/test.py к каталогу /home/user/Documents/test.py а затем запустить файл, но он не работает.
Лучший ответ:
Попробуй это:
from os import system system(«gnome-terminal -e ‘bash -c «python3 %s»‘»%filename)
Вы также можете добавить другие параметры, такие как sleep, разделив их точкой с запятой:
system(«gnome-terminal -e ‘bash -c «python3 %s; sleep 5″‘») Ответ №1
Я считаю, что вам нужно передать свое имя файла как еще один элемент массива. У меня нет gnome-terminal, но я реплицировал вашу проблему с простой sh.
import subprocess subprocess.call([‘gnome-terminal’, ‘-x’, ‘python3’, filename]) Ответ №2
Вы пытаетесь выполнить python3/home/user/Documents/test.py команду python3/home/user/Documents/test.py которая, очевидно, не существует в вашей системе.
Когда вы вводите эту строку в оболочке, оболочка будет разбивать ее на пробелы, и в конце она вызовет python3 с /home/user/Documents/test.py качестве аргумента.
При использовании subprocess.call вы должны сами выполнять разделение.
Ответ №3
Попробуйте это (я предполагаю, что python3 установлен в PATH)
from subprocess import Popen command=»gnome-terminal -x python3″+filename proc=Popen(command)
если это не работает, попробуйте сначала запустить файл python и посмотреть, работает ли он или нет.
python filename