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

求助:调用gnome-terminal执行Python文件提示文件不存在

解决subprocess调用gnome-terminal执行Python脚本的文件找不到问题

我来帮你排查这个问题——你的核心问题出在subprocess参数的传递方式上,咱们一步步解决:

核心错误原因

你当前的代码把python /root/Desktop/Script/website/bb.py作为一个整体参数传给gnome-terminal -x,但subprocess的列表参数要求每个命令、每个参数都必须是单独的元素。这会导致gnome-terminal误以为你要执行一个名叫python /root/Desktop/Script/website/bb.py的可执行文件,而不是调用python并传入脚本路径作为参数,自然会报“no such file or directory”。

修正后的代码

把命令和参数拆分成独立元素即可,推荐用--代替-x(gnome-terminal官方更推荐的写法,兼容性更好):

import subprocess
subprocess.call(['gnome-terminal', '--', 'python', '/root/Desktop/Script/website/bb.py'])

其他可能的坑点排查

如果修正后还是报错,你可以检查以下几点:

  • Python版本不匹配:如果你的脚本是用Python3编写的,但系统默认python指向Python2,替换成python3:
    subprocess.call(['gnome-terminal', '--', 'python3', '/root/Desktop/Script/website/bb.py'])
    
  • 路径验证:先在终端手动执行ls /root/Desktop/Script/website/bb.py,确认文件确实存在。注意路径的大小写(比如有些系统是desktop而非Desktop)、拼写是否正确。
  • 权限问题:如果你不是以root用户运行调用脚本,普通用户默认没有访问/root目录的权限。建议把脚本移到普通用户的目录(比如/home/你的用户名/Desktop/...),或者临时切换到root用户执行。
  • 使用Python绝对路径:避免环境变量导致的Python路径问题,先用which python或which python3拿到绝对路径,再替换到代码里:
    # 假设which python3输出/usr/bin/python3
    subprocess.call(['gnome-terminal', '--', '/usr/bin/python3', '/root/Desktop/Script/website/bb.py'])
    

测试小技巧

先在终端直接执行gnome-terminal命令,确认能正常打开终端并运行脚本,再放到subprocess里,这样能快速定位是命令的问题还是subprocess调用的问题。比如:

gnome-terminal -- python /root/Desktop/Script/website/bb.py

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:38:57