«Не удалось выполнить дочерний процесс (нет такого файла или каталога)» при вызове подпроцесса gnome-terminal в Python 3

Вопрос: Я пытаюсь написать программу, которая открывает окно 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 а

Вопрос:

Я пытаюсь написать программу, которая открывает окно 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

Оцените статью
Добавить комментарий