Переменные среды пути в Python и Mac OS X при использовании subprocess.call - PullRequest
0 голосов
/ 19 июля 2011

Python (2.6.6 - EPD 6.3-1 (32-разрядный)) не может найти двоичный исполняемый файл при использовании

call(cmmd, shell=True)

В Mac OS 10.6.8, запущенной из Eclipse / Pydev,и возвращает, что sh не может найти исполняемый файл.Запуск

print os.environ['PATH']

возвращает пути по умолчанию:

/usr/bin:/bin:/usr/sbin:/sbin

Теперь запуск этого исполняемого файла или сценария из любой оболочки не является проблемой, и егопуть добавляется в / etc / profile, ~ / .profile и в / etc / paths

Есть идеи, как настроить Pydev?Конфигурация запуска выглядит по порядку, т.е. она подбирает правильную версию Python.

Примечание: отредактировано для ясности

1 Ответ

2 голосов
/ 19 июля 2011

Существует разница между оболочкой входа в систему и оболочкой без регистрации. При запуске на Python, запускаемом из Eclipse, ваша оболочка будет запускаться как оболочка без регистрации, которая НЕ будет загружать ~/.profile. Эта статья содержит подробности . Поэтому вам нужно убедиться, что в os.environ есть каталог, в котором находится ваш исполняемый файл, прежде чем вы вызовете subprocess.call, или вы можете просто указать абсолютный путь к исполняемому файлу, или убедиться, что ваш скрипт оболочки (если ваш исполняемый файл просто оболочка) script) использует абсолютные пути или управляет собственной переменной окружения PATH. Вы также можете передать словарь переменных среды в subprocess.Popen, чтобы получить подробный контроль над средой подпроцесса и многими другими аспектами.

...