2015-03-08 190 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