qsub myScript.sh -cwd
シェル スクリプトが Python-2.7 スクリプトを実行する経由でジョブを送信しようとしていmyPython.py
ます。
# myScript.sh
python2.7 myPython.py
ここmyPython.py
で、ローカル ディレクトリに保存されている Python パッケージをインポートする必要があるため、スクリプトは
# myPython.py
import sys
sys.path.append('/file/path/for/package')
import package
ジョブを送信すると、ログ ファイルには Python からの次の出力が含まれます。
ImportError: No module named problem_c
このエラーは、いくつかのモジュールが*.py
エラーを返さずにファイルからインポートされた後に発生するため、パスの問題ではないと確信しています。私が見つけた唯一の違いは、problem_c
ファイルが.pyf
(つまりproblem_c.pyf
)で終わることです。で終わるモジュールと同じディレクトリに保存されます.py
。
スクリプトをローカルで実行するpython2.7 myPython.py
と、パッケージのロード時にこのエラーは発生しません。ただし、ジョブはメモリを集中的に使用するため、キューに送信しないと完了できません。を使用すると、ファイルとして記述されたモジュールの.pyf
扱いが異なるのはなぜqsub
ですか? この場合、モジュールをインポートするにはどうすればよいですか?
(問題があれば、私が取り組んでいるクラスターは Sun Grid Engine でセットアップされています。)
ご意見ありがとうございます。