Подпроцесс Python возвращает ненулевой статус выхода только в cron

У меня есть сценарий Python, который управляет серией задач CasperJS и обрабатывает результат. Он хорошо работает из командной строки, но когда я запускаю скрипт в cron, я получаю ошибку:

CalledProcessError: Command '['/path/to/casperjs', '/path/to/doSomething.js', 'args']' returned non-zero exit status 1 

В Python я называю CasperJS:

 response = subprocess.check_output(['/path/to/casperjs', '/path/to/doSomething.js', 'args'], shell=True) 

Я пробовал shell=False и Popen , но я получаю тот же результат. Я также попытался сделать всю команду строкой (вместо списка), но это тоже не помогло.

Выполнение '/path/to/casperjs /path/to/doSomething.js args' возвращает код возврата 0 при запуске в оболочке.

Я также добавил PATH=/usr/bin:/bin:/sbin:/usr/local/bin к моему crontab безрезультатно. (Как было предложено в этом вопросе .)

Любые идеи, почему я получаю эту ошибку только в cron? Благодаря!!

EDIT: в соответствии с приведенным ниже ответом установка shell=False и stderr=subprocess.STDOUT заставили все работать …

One Solution collect form web for “Подпроцесс Python возвращает ненулевой статус выхода только в cron”

Вы должны попытаться захватить stderr в дополнение к stdout, чтобы вы могли точно узнать, почему программа терпит неудачу (при условии, что она действительно печатает некоторые ошибки для вас)

 cmd = ['/path/to/casperjs', '/path/to/doSomething.js', 'args'] response = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT) 
  • Запуск скрипта python из crontab
  • Обнаруживать, запускается ли скрипт python с консоли или crontab
  • Задача cron не выводится на nohup.out
  • Есть ли модуль Python для получения следующей версии времени из определения времени в стиле crontab?
  • Малина Pi crontab запускает скрипт py при загрузке -> протоколирование: ошибка mysql 2002 (не удается подключиться к локальному серверу)
  • Python - лучший язык программирования в мире.