1

В настоящее время я работаю над 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 ответ1

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .