Не могу получить bash для работы с python на SGE

В настоящее время я работаю над SGE, и я крайне незнаком со средой Linux. Я должен выполнить сценарии Python, но установка меня немного смущает, и я не могу заставить ее работать.

Установка следующая: по умолчанию установлен Python 2.4, и мне нужно использовать 2.7 с некоторыми библиотеками.

Затем я связал все, что мне нужно, с этими строками:

export LD_LIBRARY_PATH=/home/volatile/xxx/local/lib:$LD_LIBRARY_PATH
export LD_RUN_PATH=/home/volatile/xxx/local/lib:$LD_RUN_PATH
export PATH=/home/volatile/xxx/local/bin:$PATH
export PYTHONPATH=/home/volatile/xxx/src/scikit-learn:$PYTHONPATH

Тогда, если я наберу эти строки и вызову python test.py он выполняет мой код и связывает все отлично.

Тогда, если я попытаюсь сделать сценарий bash (подходящий для отправки в SGE), он не будет работать

': [Errno 2] No such file or directory

Вот сценарий

#!/bin/bash

#$ -N JOB_TKO
#$ -l h_vmem=1000M
#$ -l h_rt=864000
#$ -S /bin/bash
#$ -cwd

unset SGE_ROOT

export LD_LIBRARY_PATH=/home/volatile/xxx/local/lib:$LD_LIBRARY_PATH
export LD_RUN_PATH=/home/volatile/xxx/local/lib:$LD_RUN_PATH
export PATH=/home/volatile/xxx/local/bin:$PATH
export PYTHONPATH=/home/volatile/xxx/src/scikit-learn:$PYTHONPATH

python test.py

Это даже не будет работать, если я удалил строки, связанные с SGE, и я делаю $ bash job.sh

#!/bin/bash

export LD_LIBRARY_PATH=/home/volatile/xxx/local/lib:$LD_LIBRARY_PATH
export LD_RUN_PATH=/home/volatile/xxx/local/lib:$LD_RUN_PATH
export PATH=/home/volatile/xxx/local/bin:$PATH
export PYTHONPATH=/home/volatile/xxx/src/scikit-learn:$PYTHONPATH

python test.py

Если бы кто-то мог заставить меня понять, почему это не работает, это было бы действительно здорово, спасибо!

1 ответ

Решение

Ваш bash Сценарий имеет окончания строки DOS, но bash ожидает окончания строки в стиле Unix (просто перевод строки, а не пара возврат каретки / перевод строки. Вам нужно будет удалить их; dos2unix хороший инструмент для использования, так как tr -d '\r',

В частности, кажется, что сообщение об ошибке исходит от

python test.py

поскольку bash принимает возврат каретки после y в test.py как часть имени файла. "Реальное" сообщение об ошибке состоит из байтов

python: can't open file 'test.py\r': [Errno 2] No such file or directory

но \rпри отображении в терминале вызывает возврат курсора в начало строки, так что остальная часть сообщения об ошибке начинается с ': [Errno 2]... перезаписывает предыдущую часть, производя, как вы видели

': [Errno 2] No such file or directory
Другие вопросы по тегам