2016-08-16 2 views
-1

Я использую am using Python 2.7 на MacOS и хочу использовать команду bash в скрипте python.с использованием команд bash в python на mac: ошибка 127

command = "someProgram --option1 value 1 --option2 value 2" 

Мне пришлось включить путь этой программы в мой файл bash_profile, чтобы запустить его. Я не тестировался до сих пор:

os.system(command) 

и

subprocess.check_call(command.split(" "),shell=True) 

Ни работал. Последний сбросил ошибку 127, а первый только вернул 32512. Google google сказал мне, что это происходит, когда команда неизвестна.

Если я сейчас запустил эту команду в терминале, все работает отлично.

Должен ли я включать что-то такое, что python может найти эту команду? Почему это поведение?

+0

Что это за команда? – khelwood

+0

Что такое команда? – ForceBru

+0

Если 'someProgram' не находится в вашей PATH, ну, вот и вы. И 'command.split (" ")' не будет работать по причинам, которые должны быть полностью очевидны, когда ваши значения могут иметь пробелы в них. –

ответ

0

Спасибо за вашу помощь. Окончательное решение выглядит глупо. Я начал использовать spyder через графический интерфейс anaconda. Если я это сделаю, приведенный выше код не работает.

Если я запускаю это прямо через консоль или запускаю spyder через консоль, все в порядке. Кажется, что bash_profile не загружается при загрузке spyder, но для этого требуется консоль

1

С shell=True cmd должна быть строка.

subprocess.check_call(command, shell=True)

где команда типа str

+0

такая же ошибка без разделения – Glostas

+1

Из этого обсуждения: «Если args - это последовательность, первый элемент указывает командную строку, и любые дополнительные элементы будут рассматриваться как дополнительные аргументы самой оболочки». Со списком аргументы для программы будут передаваться в качестве аргументов в оболочку. – danny

+0

Вероятно, проблема с котировками с значениями опций. Попробуйте с командой = "" "someProgram --option1 = 'value 1' --option2 = 'value 2'" "" – danny

Смежные вопросы