Команда не найдена при использовании python для сценариев оболочки

У меня есть этот скрипт Python:

#!/usr/bin/python

print 'hi'

Я пытаюсь отправить этот скрипт как задание для выполнения на вычислительном кластере. Я отправляю его с qsub вот так: qsub myscript.py

Перед запуском я выполнил следующее:

chmod +x myscript.py

Однако, когда я открываю выходной файл, я нахожу это:

Warning: no access to tty (Bad file descriptor).
Thus no job control in this shell.

И когда я открываю файл ошибки, я нахожу это:

print: Command not found.

Так что не так?!

Изменить: я следовал инструкциям в этот вопрос < /а>


person Jack Twain    schedule 16.08.2014    source источник


Ответы (2)


Похоже, что qsub не читает вашу строку shebang, поэтому просто выполняет вашу скрипт с использованием оболочки.

Этот ответ предоставляет несколько вариантов того, как с этим справиться, в зависимости от вашей системы: Как я могу использовать qsub с Python из командной строки?

person ford    schedule 16.08.2014
comment
идея в том, что я хочу избежать написания файлов сценариев bash - person Jack Twain; 16.08.2014

Опция состоит в том, чтобы установить интерпретатор на python следующим образом:

qsub -S /usr/bin/python  myscript.py

Я совершенно уверен, что есть альтернативный способ сделать это без опции -S и заставить SGE выполнять код на основе интерпретатора в shebang; однако этого решения может быть достаточно для ваших нужд.

Кроме того, относительно этого вывода:

Warning: no access to tty (Bad file descriptor).
Thus no job control in this shell.

Кажется безопасным игнорировать это:

http://www.linuxquestions.org/questions/linux-software-2/warning-no-access-to-tty-bad-file-descriptor-702671/

РЕДАКТИРОВАТЬ:

Также работает:

qsub <<< "./myscript.py"
qsub <<< "python ./myscript.py"
person Vince    schedule 19.08.2014