You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python通过os.system提交SLURM脚本时出现sh: logger: command not found错误

问题解决办法

核心原因

os.system() 默认调用的是非登录、非交互式的 sh 环境,不会加载用户的 .bashrc/.profile 等配置文件,导致终端里正常的环境变量(比如包含 logger、SLURM工具的 PATH)在这个环境中缺失。而直接在终端执行 sbatch 时,用的是交互式登录shell,所有环境配置都已加载,所以没有问题。

具体解决方案

1. 让shell加载完整登录环境执行sbatch

把Python里的提交命令改成调用登录模式的bash,强制加载所有环境配置:

os.system('bash -lc "/usr/local/slurm/bin/sbatch ' + fname + '"')

-lc 参数让bash以登录模式运行,会自动加载你的环境配置文件,补上缺失的 PATH 和其他SLURM相关变量,避免后续复杂任务出现环境缺失问题。

2. 手动设置完整的PATH环境变量

在Python脚本开头,直接把需要的路径添加到环境变量里(先在终端执行 echo $PATH,复制完整的PATH内容,或者只补充缺失的部分):

import os
# 补充logger和slurm的路径,比如logger通常在/usr/bin
os.environ['PATH'] = '/usr/bin:/usr/local/slurm/bin:' + os.environ['PATH']
# 之后再用sbatch命令
os.system('/usr/local/slurm/bin/sbatch ' + fname)

3. 检查SLURM作业脚本的环境配置

确保你的SLURM作业脚本(即fname对应的文件)开头的shebang用bash而非sh:

#!/bin/bash

如果作业脚本需要特定环境(比如conda、模块),可以在脚本开头手动source对应的配置文件,比如:

source ~/.bashrc
module load slurm

内容的提问来源于stack exchange,提问作者user1237300

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 15:01:38