Fedora 16, подпроцесс python. Открыт из IDE против терминала - PullRequest
2 голосов
/ 29 марта 2012

Итак, как говорится в заголовке, у меня проблемы с запуском нового подпроцесса под Fedora. Теперь ситуация такова, что у меня есть основной скрипт Python, из которого я запускаю несколько других процессов Python, используя:

import subprocess
subprocess.Popen(['python', '-m', 'first_child.run', 'start'], shell=False)

Теперь это отлично работает на MacOS, Debian и Windows. На fedora, если я запускаю его из Aptana 3 IDE, он также работает, единственная проблема - когда я пытаюсь запустить этот основной скрипт из терминала, где я получаю:

OSError: [Errno 2] No such file or directory

У вас есть идеи, в чем здесь проблема?

С уважением, Богдан

Ответы [ 2 ]

1 голос
/ 29 марта 2012

Это ваш текущий рабочий каталог. Я не думаю, что проблема в том, что он не может найти питона, проблема в том, что он не может найти first_child.run.

Попробуйте напечатать os.getcwd() перед запуском подпроцесса и посмотрите, отличается ли он в терминале от IDE.

Кстати, вероятно, более надежно использовать sys.executable в качестве питона, который вы используете в своем подпроцессе, а не просто сказать python. Например, subprocess.Popen([sys.executable, '-m', 'first_child.run', 'start'], shell=False)

1 голос
/ 29 марта 2012

Извините, если вы уже подумали об этом - но наиболее частая причина OSError из обращений к подпроцессу заключается в том, что он не может найти процесс

http://docs.python.org/library/subprocess.html#exceptions

Вы абсолютно уверены, что питон на вашем пути?

Я знаю, что вы, вероятно, собираетесь указать, что вы запустили этот скрипт из исполняемого файла python - но я подумал, что, возможно, вы укажете полный путь к python при запуске из терминала. 1008 *

Ради интереса, прямо перед вызовом подпроцесса вы можете сбросить свой PATH

import os
print os.environ['PATH']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...