【问题标题】:Automatically running python script on raspberry pi在树莓派上自动运行 python 脚本
【发布时间】:2015-03-22 21:31:24
【问题描述】:

我正在尝试在系统重新启动时自动运行我的 python 脚本。我已经关注了很多关于这个主题的其他线程,并认为我很接近,但是得到了一个权限被拒绝的错误。

我的脚本使用 GPIO 和 Tkinter,并且是用 Python 3.2.3 编写的

第一步是我将此行添加到脚本的顶部。

#! /usr/bin python3.2

我看到其他帖子他们做了 /bin/etc python 从我可以告诉这里没有安装 python 并且如果我尝试这样做会引发其他错误。我也尝试了 python 而不是 python 3.2,但我认为我应该有 3.2

然后我去终端运行这个命令。

sudo chmod +x /home/pi/FDRT/stopclock.py

这立即返回,没有任何错误。

然后我修改了 LXDE 自动启动文件

sudo nano ~/etc/xdg/lxsession/LXDE/autostart

我将此行添加到底部。

/usr/bin/sudo ~/FDRT/stopclock.py

然后我重新启动了 pi,它没有做任何事情 在 /home/pi 我打开 .xsession-errors 文件,看到我有一个权限被拒绝错误。

然后我只是尝试在终端窗口中运行相同的命令

/usr/bin/sudo ~/FDRT/stopclock.py

这会返回相同的权限被拒绝错误。

有人可以帮我解决我在这里做错了什么吗?

【问题讨论】:

  • 将其添加到/etc/rc.local ...这是最简单的方法(并且总是称为...)(也不要 lxde 条目看起来像@/usr/bin/sudo ...)您还应该始终使用完全限定的路径在那些(即/home/pi/... 而不是~
  • 另外,您可以在运行脚本之前使用环境变量 export DISPLAY=:0 在终端的显示屏上运行它
  • crontab -e 然后@reboot pth_to_your_script
  • 我尝试了完全合格的路径。 /usr/bin/sudo /home/pi/FDRT/stopclock.py 这仍然导致权限被拒绝。根据 Foon 的建议,我将脚本的标题更改为 #!/usr/bin/python3.2 这个错误。我可以#!/usr/bin/ python3.2
  • Padraic 我首先尝试了 crontab 方法,但由于 gpio 和 tkinter 而遇到了问题。从这里返回的错误是 _tkinter.TclError: no display name and no $DISPLAY environment variable。我应该指出,如果我从 IDLE 3 运行我的脚本,它运行良好。

标签: python linux raspberry-pi


【解决方案1】:

您在本地获得权限被拒绝的事实应该使调试更容易。第一个问题是您似乎缺少 / 变化:

> #! /usr/bin python3.2

> #!/usr/bin/python3.2

编辑以回应 Joran 的评论:

注意如果你有以下简单的程序(权限设置为755)

#! /usr/bin python
print "Hello world"

python test.py 运行它会打印出hello world;以./test.py 运行它会返回:-bash: ./test.py: /usr/bin: bad interpreter: Permission denied(至少在我的系统上;我想我只是在其他地方看到了 Permission denied ),这就是为什么我希望这可以在没有进一步测试的情况下解决问题(假设这就是OP 有 shebang,而不仅仅是粘贴到 SO 中的神器)

另外,我建议在您的步骤中将 ~ 替换为真实路径 (/home/pi),以确保某处没有将其扩展到例如root 的家(假设 /home/pi 不是 root 在 RPi 上的家)

【讨论】:

  • 虽然这可能是正确的......我不知道它回答了 OP 的问题
猜你喜欢
  • 2023-01-08
  • 2015-05-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-17
  • 1970-01-01
相关资源
最近更新 更多