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

Linux(Ubuntu)下Python用os.system调用脚本报错Main.py未找到

问题原因与解决方案

这个问题我之前也碰到过,核心是Windows和Linux在脚本执行逻辑上的几个关键差异导致的,我给你拆解一下:

为什么会出现“Main.py: not found”?

有两个主要原因:

  • 路径查找规则不同:Linux系统默认不会把当前工作目录(.)加入PATH环境变量,所以你直接写Main.py时,系统会在PATH里的系统目录找这个文件,而不会在当前目录查找,自然找不到。Windows则不同,默认会优先在当前目录查找可执行文件。
  • 脚本执行方式不同:Windows里如果你的.py文件关联了Python解释器,双击或者直接打脚本名就能运行;但Linux不会自动识别.py文件需要用Python执行,除非你明确指定解释器,或者给脚本加上可执行权限和shebang头。

具体解决办法

我给你两种常用的修复方案,选哪种都可以:

方案一:直接用Python解释器调用(最稳妥,无需修改Main.py权限)

修改script.py里的os.system命令,明确用Python解释器来执行Main.py,同时加上当前目录的相对路径./:

import os
value="bar"
id="foo"
# 注意原代码里的变量是id,不是eqid,应该是笔误
os.system('python3 "./Main.py" %s %s' % (id, value))

如果你的系统里python指向的是Python3,也可以用python代替python3。

方案二:给Main.py添加可执行权限和shebang头

这种方式更贴近Linux下的脚本执行习惯:

  1. 打开Main.py,在第一行添加shebang头(告诉系统用哪个解释器执行这个脚本):
#!/usr/bin/env python3
import sys
name=sys.argv[1]
send=sys.argv[2]
  1. 在终端里进入脚本所在目录,给Main.py添加可执行权限:
chmod +x Main.py
  1. 修改script.py里的命令,用相对路径调用:
import os
value="bar"
id="foo"
os.system('./Main.py %s %s' % (id, value))

额外推荐:用subprocess代替os.system

其实os.system是比较老旧的API,Python官方更推荐用subprocess模块,它更安全(能避免shell注入风险),也更灵活,跨平台表现更好。比如把代码改成这样:

import subprocess
import sys
value="bar"
id="foo"
# sys.executable会自动获取当前Python解释器的路径,适配不同环境
subprocess.run([sys.executable, './Main.py', id, value])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:11:28