Не могу получить 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