我正在尝试使用Raspbian和LXDE通过Raspberry Pi上的桌面图标/快捷方式/启动器运行Python脚本。我必须使用桌面启动器,因为脚本必须通过一个小触摸屏启动,只接受左键单击而没有键盘。
我认为我有一个权限问题,因为脚本在应该执行一些需要root的系统命令时失败。
如果我执行以下操作,脚本将起作用:
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
我想我错过了一些明显的东西,但由于我不使用Linux,我常常迷失在这里。
编辑:问题不是缺少权限,而是错误的假设工作目录,现在已经解决了。对不起我的困惑。
详细说明:在开发期间,脚本从其自己的文件夹启动,而桌面启动器使用/home/pi
作为工作目录。一般来说,这不是问题,但在脚本中使用了硬编码路径,并且在使用启动器时找不到所需文件。真正的问题是草率吞噬并且返回了许可问题的状态代码。所以这只是一个糟糕的代码问题。
答案 0 :(得分:1)
Exec键必须包含命令行。命令行包含 可执行程序,可选地后跟一个或多个参数。 可执行程序可以使用其完整路径指定 仅限可执行文件的名称。 如果没有提供完整路径,则 可执行文件在$ PATH环境变量中查找 桌面环境。可执行程序的名称或路径可以 不包含等号(" =")。参数由空格分隔。
结果是,python3可能不在桌面环境使用的$ PATH中。尝试使用以下内容检查python3
和sudo
的完整路径。
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
如果有帮助,请告诉我。