クラスタマネージャーslurmを使用していて、sbatch(Pythonインターペーターを使用)を使用してサブミットスクリプトを実行していました。 sbatch submissionは、main_nn.py
というモジュールの1つをインポートしました。モジュールは私のサブミットディレクトリと同じ場所にありますが、ファイルが存在していてもpythonはそれを見つけることができません。なぜこのことが起こっているのかを考え出すのは難しいです。私のpythonファイルには、以下のようになります。SLURMでsbatchコマンドを使用するときにローカルPythonモジュールをインポートする方法
#!/usr/bin/env python
#SBATCH --job-name=Python
print('hi')
import main_nn
私SLURMダンプファイルの出力があるしかし:
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
は、カレントディレクトリにあった、それは確かにあった場合、私はチェックしてみました。したがって、私に疑わしい最初のことは、slurmファイルのエラーが、path_to_project
ではなく、"/home/slurm/slurmd/job3223398/slurm_script"
にあると言っていたということでした。したがって、私は先に行ってきましたそのsbatchがで実行されるスクリプトへのファンキーな何かをやっている意味する必要があります私のスクリプトから、私の驚き、それはむしろ"/home/slurm/slurmd/job3223398/slurm_script"
でよりpath_to_project
で実行していたに実行されていた場所を確認するにはライン
os.system('pwd')
を追加しました1つの場所が、それを別の場所で考えるようにします。この場合、モジュールが私のサブミットスクリプトと同じ場所にあるところで、私はどのようにPythonでインポートを行うと思われますか?私はそれをパッケージに入れて、パッケージ/ライブラリでそれを考えるためにpythonを欺くことを余儀なくされましたか?
https://rcc.uchicago.edu/docs/tutorials/kicp-tutorials/running-jobs.html –
提出ディレクトリにPYTHONPATHを設定しようとしましたか? – damienfrancois
関連: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 –