2015-03-08 189 views
0

我想通過使用Raspbian和LXDE的Raspberry Pi上的桌面圖標/快捷方式/啓動器來運行Python腳本。我必須使用桌面啓動器,因爲腳本必須通過微型觸摸屏啓動,只能接受左鍵單擊而沒有鍵盤。
認爲我有一個權限問題,因爲腳本失敗的地方,它應該執行一些需要root的系統命令。LXDE .desktop文件權限問題

  1. 打開一個終端
  2. 輸入sudo python3 program.py

我試着用下面的配置來複制一個.desktop文件這種行爲:如果我做了以下

該腳本

[Desktop Entry] 
Encoding=UTF-8 
Version=1.0 
Type=Application 
Exec=sudo python3 program.py 
Terminal=true 
Icon=path/to/icon.png 
Name=Program Launcher 

我想我錯過了事端g很明顯,但由於我通常不在Linux上工作,通常我在這裏有點失落。

編輯:問題不是缺少權限,而是錯誤地假定工作目錄,現在已解決。對不起,我的困惑。
詳細信息:在開發過程中,腳本從其自己的文件夾啓動,而桌面啓動器使用/home/pi作爲工作目錄。通常這不是問題,但是在腳本中使用了硬編碼路徑,並且在使用啓動器時找不到所需的文件。真正的問題是sl sw不馴,許可問題的狀態代碼被返回。所以這只是一個糟糕的代碼問題。

回答

1

由於docs for desktop entries說:

上述EXEC鍵必須包含一個命令行。命令行由一個可執行程序(可選地跟有一個或多個參數)組成 。 可執行程序可以用其完整路徑指定,也可以用可執行程序的名稱指定爲 。 如果未提供完整路徑,則 可執行文件將在 桌面環境使用的$ PATH環境變量中查找。可執行程序的名稱或路徑可能不包含等號(「=」),即 。參數由空格分隔。

這導致了結論,也許python3不在桌面環境使用的$ PATH中。測試一下python3sudo的完整路徑具有:

whereis python3 
whereis sudo 

我的Archlinux它給了我/usr/bin/python3/usr/bin/sudo。嘗試修改您的Dekstop條目類似於:

[Desktop Entry] 
Encoding=UTF-8 
Version=1.0 
Type=Application 
Exec=/usr/bin/sudo /usr/bin/python3 program.py 
Terminal=true 
Icon=path/to/icon.png 
Name=Program Launcher 

讓我知道這是否有幫助。

+1

謝謝我試過了。但是,真正的問題是錯誤地假設的路徑。我不好,我以前沒有意識到這一點。 – marce 2015-03-08 19:44:56

+0

你的意思是錯誤地假設路徑是什麼意思?你可以請,澄清一下誰會有類似的問題? – 2015-03-08 19:46:14

+0

當然,我更新了OP。這真的只是寫錯了代碼,我誤導了返回的錯誤。 – marce 2015-03-08 19:51:51