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

如何通过Python subprocess执行Altair Accelerator(NC)的nc run命令

错误原因
  • subprocess.Popen传入列表形式的命令参数时,要求可执行文件、每个参数都作为列表的独立元素,你原代码将nc run作为第一个列表元素,系统会尝试查找名为nc run的可执行文件,这是触发No such file or directory错误的直接原因。
  • 列表第二个参数开头携带多余空格,也会导致参数解析异常。
修复代码

优先推荐列表拆分写法,无需启用shell解析,安全性更高:

import subprocess

with open('test.txt', 'w') as f:
    cmd = [
        'nc',
        'run',
        '-q', 'vnc01',
        'run',
        '-C', 'TEST',
        '-wl',
        '-I',
        '-r+', 'CORES/32',
        '-r+', 'RAM/150000',
        '--',
        '/bin/tcsh'
    ]
    # stderr=subprocess.STDOUT 表示将错误输出也写入test.txt,方便排查问题,不需要可删除
    process = subprocess.Popen(cmd, stdout=f, stderr=subprocess.STDOUT)
    # 等待命令执行完成,可按需获取返回码
    process.wait()

如果希望和原shell命令写法完全一致,也可以使用字符串+shell=True的写法,注意如果命令包含外部不可信输入时不要用该写法,存在shell注入风险:

import subprocess

with open('test.txt', 'w') as f:
    cmd = 'nc run -q vnc01 run -C TEST -wl -I -r+ CORES/32 -r+ RAM/150000 -- /bin/tcsh'
    process = subprocess.Popen(cmd, shell=True, stdout=f, stderr=subprocess.STDOUT)
    process.wait()
补充说明

如果运行后仍然提示找不到nc命令,可在shell中执行which nc获取nc的绝对路径,替换代码中cmd列表的第一个元素即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 23:36:01