无法让 Bash 在 SGE 上与 Python 一起工作

无法让 Bash 在 SGE 上与 Python 一起工作

我目前正在使用 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

因为将inbash后面的回车符作为文件名的一部分。“真正的”错误消息由字节组成ytest.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

相关内容