Não é possível obter um bash para trabalhar com python em um SGE

1

Atualmente estou trabalhando em um SGE e estou extremamente familiarizado com o ambiente linux. Eu tenho que executar scripts python, mas a configuração é meio confusa para mim e eu não consigo fazer isso funcionar.

A configuração é a seguinte: O python padrão instalado é o 2.4 e eu preciso usar o 2.7 com algumas bibliotecas.

Em seguida, vinculei tudo o que precisava com essas linhas:

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

Então, se eu digitar essas linhas e chamar python test.py , ele executará meu código e vinculará tudo de maneira excelente.

Então, se eu tentar criar um script bash (qualificável para envio ao SGE), não funcionará

': [Errno 2] No such file or directory

Aqui está o script

#!/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

Nem funcionará se eu remover as linhas relacionadas ao SGE e eu fizer $ 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

Se alguém pudesse me fazer entender por que isso não funciona, seria ótimo, obrigado!

    
por AdrienNK 11.03.2014 / 18:29

1 resposta

1

Seu script bash tem finais de linha do DOS, mas bash espera terminações de linha no estilo Unix (apenas um par de feed de linha, não de retorno de carro / linha. Você precisará removê-los; dos2unix é uma boa ferramenta para usar, pois é tr -d '\r' .

Especificamente, parece que a mensagem de erro vem de

python test.py

desde que bash obtenha o retorno de carro seguindo o y em test.py como parte do nome do arquivo. A mensagem de erro "real" consiste nos bytes

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

mas o \r , quando exibido no terminal, faz com que o cursor retorne ao início da linha, para que o restante da mensagem de erro começando em ': [Errno 2]... substitua a parte anterior, produzindo como você viu

': [Errno 2] No such file or directory
    
por 11.03.2014 / 21:17