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

subprocess带shell=True运行用户Python脚本异常及资源限制问题咨询

问题原因

当使用shell=True时,subprocess.run对参数的处理逻辑和shell=False完全不同:

  • 你当前传入的列表['/usr/bin/python', 'foo.py'],shell会将/usr/bin/python作为要启动的程序,而foo.py会被当作shell自身的参数,不会传递给python进程。因此python没有收到要执行的脚本路径,直接进入交互模式挂起。
  • 你测试gcc时能正常工作,大概率是测试时无意中调整了参数格式(比如改用了字符串命令),否则同样的参数格式会导致gcc因缺少输入文件报错,而非正常执行。
解决方案

有两种可靠的修正方式:

方式一:改用字符串形式传递完整命令

直接将整个命令写成字符串,shell会自动解析参数:

res = subprocess.run('/usr/bin/python foo.py', shell=True, capture_output=True)

方式二:按shell的参数规范传递列表

明确指定shell路径,并通过-c参数传递要执行的命令(这种方式更安全,避免字符串解析的潜在问题):

res = subprocess.run(['/bin/sh', '-c', '/usr/bin/python foo.py'], shell=True, capture_output=True)
额外注意点

你的代码中遗漏了import resource语句,需要在开头添加,否则会抛出NameError。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 07:25:27