簡體   English   中英

通過 .sh 或 .desktop 文件執行 python 腳本不起作用

[英]Executing a python script through .sh or .desktop file not working

我正在設置一台運行 Ubuntu 20.04.3 的帶有觸摸屏且沒有鍵盤/鼠標的 PC。 因此,我放置了桌面圖標,這些圖標將運行數據采集/分析所需的軟件。 首先使用單擊執行的 .sh 文件,然后使用 .desktop 文件,我能夠毫無問題地進行設置。

我遇到的問題是,這不適用於運行 tkinter 和 ROOT 的 python3 文件。 我首先在 .py 文件和執行 python 文件的 .sh 文件的開頭編寫 shebang #!/usr/bin/env python3 當我單擊 .sh 文件時,沒有任何反應。 如果我通過鍵入./Bash_File.sh在終端上運行 .sh 文件,它將毫無問題地執行。 此外,我確實制作了 .py 可執行文件,因此我也可以通過轉到目錄並鍵入./Python_File.py來運行它。

然后我決定嘗試使用 .desktop 文件,類似於我開始工作的第一個程序。 我嘗試從 .desktop 文件中執行 .sh 文件和 .py 文件,但我得到相同的錯誤: ModuleNotFoundError: No Module named 'ROOT' 在 .desktop 文件中,我使用Exec=/filepath/Python_File.py執行 .py 文件。 同樣,我可以通過終端運行這個文件,但沒有任何運氣使用圖標來運行它。 我在網上到處尋找答案,但沒有運氣。 謝謝您的幫助

免責聲明:通用答案,因為我對 ROOT 模塊一無所知。

這是一個python錯誤,它找不到ROOT模塊,大多像一個名為ROOT.py的特定文件。 原因是 Bash 登錄會話與 Bash 系統會話不同。

從桌面啟動器和 shell 中運行此腳本:

#!/usr/bin/env bash
echo $PATH | tr : \\n >my_path-`date +%s`

如果兩個輸出文件不同,請找出哪個目錄包含“ROOT.py”並將其添加到您的啟動器腳本中:

#!/usr/bin/env python3
import sys
sys.path.append('/the/missing/directory')

如果這沒有立即讓您做好准備,這里有很多關於管理 Linux 系統路徑、常規 Bash shell 和 Bash 登錄 shell 之間的區別以及如何管理 Python 路徑的文章。 高溫高壓

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM