我正在向使用SLURM管理的群集提交作业(job).我有一个python脚本,可以自动提交作业(job),因为我正在进行超参数调优.

在我的python脚本中,我运行

os.system('sbatch ' + fname)

其中fname是一个文本文件,其中包含要提交的作业(job)的所有设置.我将这个设置用于我正在处理的前一个集群,它工作得很好.

现在,我在不同的集群上try 相同的设置,但我的脚本不起作用.我收到了抱怨:sh:sBatch:没有找到命令.我修复了这个问题,使用

os.system('/usr/local/slurm/bin/sbatch ' + fname)

取而代之的是.该脚本现在可以工作,并且现在可以提交到作业(job).

但是,当我查看输出文件时,第一行显示

Sh:logger:找不到命令

不过,这项工作执行得很好.这是一个简单的print("Hello world"),只是为了测试.

我觉得这很奇怪,因为这是在将作业(job)提交给Slurm之后发生的.如果我只是在终端上执行sBatch fname,我不会在日志(log)文件中打印此投诉.

我不确定该如何解决这件事.我担心,如果代码变得更复杂,我会在使用其他命令时遇到问题.

如果有所不同,则在文件的开始处,python脚本具有虚拟的Shebang #!/usr/bin/python -u.

推荐答案

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

Python相关问答推荐

Python在tuple上操作不会通过整个单词匹配

Polars比较了两个预设-有没有方法在第一次不匹配时立即失败

DataFrame groupby函数从列返回数组而不是值

如何在箱形图中添加绘制线的传奇?

Python json.转储包含一些UTF-8字符的二元组,要么失败,要么转换它们.我希望编码字符按原样保留

在Google Colab中设置Llama-2出现问题-加载判断点碎片时Cell-run失败

删除所有列值,但判断是否存在任何二元组

两个pandas的平均值按元素的结果串接元素.为什么?

如何在给定的条件下使numpy数组的计算速度最快?

从一个系列创建一个Dataframe,特别是如何重命名其中的列(例如:使用NAs/NaN)

调用decorator返回原始函数的输出

基于行条件计算(pandas)

Gunicorn无法启动Flask应用,因为无法将应用解析为属性名或函数调用.'"'' "

Python—在嵌套列表中添加相同索引的元素,然后计算平均值

read_csv分隔符正在创建无关的空列

在一个数据帧中,我如何才能发现每个行号是否出现在一列列表中?

如何获取给定列中包含特定值的行号?

try 在单个WITH_COLUMNS_SEQ操作中链接表达式时,使用Polars数据帧时出现ComputeError

如何在Polars中处理用户自定义函数的多行结果?

更新包含整数范围的列表中的第一个元素