我正在将作业提交到使用 SLURM 管理的集群。我有一个 python 脚本,可以自动提交作业,因为我正在进行超参数调整。
在我的Python脚本中,我运行
os.system('sbatch ' + fname)
其中
fname
是一个文本文件,其中包含要提交的作业的所有设置。我在之前正在开发的集群中使用了此设置,并且运行良好。
现在我在不同的集群上尝试相同的设置,但我的脚本不起作用。我收到投诉:sh:sbatch:找不到命令。我通过使用修复了这个问题
os.system('/usr/local/slurm/bin/sbatch ' + fname)
相反。该脚本现在可以运行并且可以提交给作业。
但是,当我查看输出文件时,第一行显示
sh:记录器:找不到命令
不过这项工作执行得很好。这是一个简单的
print("Hello world")
,仅供测试。
我觉得这很奇怪,因为这种情况是在将作业提交到 Slurm 后发生的。如果我只是在终端上执行 sbatch fname,我不会在日志文件中打印此投诉。
我不知道如何解决这个问题。我担心如果代码变得更复杂,我会遇到其他命令的问题。
如果有所不同,Python 脚本在文件开头有虚拟 shebang
#!/usr/bin/python -u
。
在命令行上运行
echo $PATH
。它是由冒号 (:
) 分隔的路径名列表。在 Python 中,在调用 os.system(...)
之前,将 os.environ['PATH']
设置为包含程序 sbatch
、logger
等程序。也不要删除旧条目。