如果 slurm 脚本通过 Python 中的 os.system 提交,则显示“sh:记录器:找不到命令”

问题描述 投票:0回答:1

我正在将作业提交到使用 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

python bash sh slurm
1个回答
0
投票

在命令行上运行

echo $PATH
。它是由冒号 (
:
) 分隔的路径名列表。在 Python 中,在调用
os.system(...)
之前,将
os.environ['PATH']
设置为包含程序
sbatch
logger
等程序。也不要删除旧条目。

© www.soinside.com 2019 - 2024. All rights reserved.