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

Ubuntu 20.04中.sh/.desktop无法运行含tkinter、ROOT的Python脚本

故障根因

终端执行脚本时会自动加载交互式shell的配置文件(~/.bashrc、~/.profile等),ROOT安装时默认会在这些配置里写入source /对应路径/root/bin/thisroot.sh的初始化逻辑,自动把ROOT的Python库路径加入PYTHONPATH,所以终端运行脚本不会报模块缺失。
通过双击shell脚本、桌面.desktop图标启动程序时,不会加载交互式shell的配置,系统使用默认全局环境变量,无法识别ROOT模块路径,就会触发ModuleNotFoundError: No Module named 'ROOT';双击.sh无响应本质是脚本启动后立刻因导入错误退出,没有弹出可见错误提示。

修复步骤
  • 定位ROOT初始化脚本路径
    终端执行which root,会返回类似/opt/root/6.26/06/bin/root的结果,将路径末尾的root替换为thisroot.sh,就是需要加载的环境脚本路径,以上面的返回结果为例,初始化脚本路径为/opt/root/6.26/06/bin/thisroot.sh。
  • 重写.sh启动脚本
    不要直接调用Python脚本,先加载ROOT环境、切换到脚本所在目录(桌面启动默认工作目录为桌面路径,不是脚本所在目录,容易触发相对路径错误)再执行脚本,参考内容如下:
    #!/bin/bash
    # 替换为你自己查到的thisroot.sh实际路径
    source /opt/root/6.26/06/bin/thisroot.sh
    # 自动切换到当前sh文件所在目录
    cd "$(dirname "$0")"
    # 替换为你的Python脚本实际文件名
    /usr/bin/env python3 ./Python_File.py
    
    保存后给sh文件加可执行权限:chmod +x /你的sh文件实际路径/Bash_File.sh
  • 修正.desktop文件配置
    不要直接在.desktop中调用.py文件,统一调用修改后的.sh脚本,调试阶段先开启终端显示方便看报错,参考配置如下:
    [Desktop Entry]
    Type=Application
    Name=数据采集分析工具
    Exec=/你的sh文件实际路径/Bash_File.sh
    # 有自定义图标就填路径,没有可以删掉Icon这行
    Icon=/你的图标路径/icon.png
    # 调试阶段设为true,跑通后改成false就不会弹出黑终端
    Terminal=true
    Categories=Utility;
    
    保存后给.desktop文件加可执行权限,可直接右键文件在属性面板勾选“允许作为程序执行”,或终端执行chmod +x /你的desktop文件路径/xxx.desktop。
  • 触控适配补充
    如果后续tkinter界面出现触控点击无响应、窗口不显示的问题,在.sh文件里source root脚本的下一行加export DISPLAY=:0即可,指定程序输出到当前桌面显示。
验证

保持Terminal=true配置双击图标,若弹出终端后正常加载tkinter界面无报错,即为配置生效,后续将Terminal字段改为false即可实现静默启动,单击图标直接进程序。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 16:21:44