Как импортировать локальный модуль Python при использовании команды sbatch в SLURM
Я использовал менеджер кластераСлерма и я запускал скрипт отправки с sbatch (с интерпретатором python). Представление sbatch импортировало один из моих модулей под названиемmain_nn.py
, Модуль находится в том же месте, что и мой каталог отправки, однако python не может его найти, даже если файл существует. Мне трудно понять, почему это происходит. Мой файл Python выглядит следующим образом:
#!/us,r/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 говорит, что местоположение моего скрипта было"/home/slurm/slurmd/job3223398/slurm_script"
а не вpath_to_project
, Таким образом, я пошел дальше и добавил строку
os.system('pwd')
чтобы увидеть, откуда выполнялся мой сценарий, и, к моему удивлению, он выполнялся вpath_to_project
а не в"/home/slurm/slurmd/job3223398/slurm_script"
это должно означать, что sbatch делает что-то необычное для выполнения скрипта в одном месте, но заставляет его думать, что это в другом месте. Если это так, то как мне сделать импорт в python, где модуль находится в том же месте, что и в моем скрипте представления? Я вынужден положить его в пакет и обмануть Python, чтобы думать, что это в пакете / библиотеке?