2016-08-31 8 views
2

클러스터 관리자 slurm을 사용하고 있으며 sbatch (파이썬 인터 피터)를 사용하여 제출 스크립트를 실행하고있었습니다. sbatch submission은 main_nn.py이라는 모듈 중 하나를 가져 왔습니다. 모듈은 제출 디렉터리와 같은 위치에 있지만 파일이 존재하더라도 python이 파일을 찾지 못합니다. 왜 이런 일이 일어나고 있는지 파악하기가 힘듭니다. 내 파이썬 파일은 다음과 같습니다SLURM에서 sbatch 명령을 사용할 때 로컬 파이썬 모듈을 가져 오는 방법

hi 
Traceback (most recent call last): 
    File "/home/slurm/slurmd/job3223398/slurm_script", line6, in <module> 
     import main_nn 
ImportError: No module named main_nn 

내가 모듈 main_nn이 현재 디렉토리에 있다면 검사를 시도하고이 참이었다

#!/usr/bin/env python 
#SBATCH --job-name=Python 

print('hi') 

import main_nn 

내 slurm 덤프 파일의 출력은 그러나. 따라서 의심스러운 첫 번째 문제는 slurm 파일의 오류로 인해 내 스크립트의 위치가 path_to_project이 아닌 "/home/slurm/slurmd/job3223398/slurm_script"에있는 것이 었습니다. 따라서 나는 앞서 갔던 그 sbatch가에서 실행되는 스크립트에 펑키 일을 의미합니다 내 스크립트에서 그리고 놀랍게도 오히려 "/home/slurm/slurmd/job3223398/slurm_script"에서보다 path_to_project에서 실행되었다에 실행 된 위치를 확인할 수있는 라인

os.system('pwd') 

추가 한 위치지만 다른 곳에서 생각하게 만듭니다. 이 경우 모듈이 내 제출 스크립트에서와 같은 위치에있는 python에서 가져 오기를 수행하는 방법은 무엇입니까? 패키지에 넣고 파이썬을 패키지/라이브러리로 생각하도록 강요합니까?

+0

https://rcc.uchicago.edu/docs/tutorials/kicp-tutorials/running-jobs.html –

+1

제출 디렉토리에 PYTHONPATH를 설정해 보았습니까? – damienfrancois

+0

관련 : https://stackoverflow.com/questions/46718499/how-does-one-make-sure-that-the-python-submission-script-in-slurm-is-in-the-loca/46724189?noredirect = 1 # comment80425963_46724189 –

답변

2

Slurm은 제출 스크립트를 계산 노드의 특정 위치로 복사하여 실행하므로 Python 스크립트는 제출 디렉터리에있는 모듈을 찾지 않습니다.

하지만 당신은 명시 적으로 같은과 파이썬 경로에 추가 할 수 있도록 Slurm 올바르게 현재 작업 디렉토리를 설정 스크립트의 시작 부분

sys.path.append(os.getcwd()) 

.

+0

나는 그것을 얻지 못한다. 왜 그렇게하지 않겠는가? –

+0

이것은 개발팀이 간과 한 것일 수 있습니다. – damienfrancois

+0

에는이 문제에 대한 인식을 제고하는 방법이 있습니까? 존재하지 않아야하는 문제의 유형이 내게 보인다. –