【问题标题】:Unable to execute a python3 script from rc.local无法从 rc.local 执行 python3 脚本
【发布时间】:2021-06-22 12:08:32
【问题描述】:

一旦 Python 脚本被执行,它就无法在 rc.local 中工作。我的想法是在 Raspberry Pi 启动时运行脚本。

我已经用这句话测试过了。 log.txt 文件只有在我手动执行程序时才会出现。

f = open("log.txt", "w")
f.write("log is working")
f.close()

在此之前,我曾尝试插入一个time.sleep(30),使用usr/bin/python3,将脚本头部更改为#!/usr/bin/env python3,将正在执行程序的用户更改为-u pi很多事情我什至不记得了。

最后一句在exit(0)之前有

sudo /usr/bin/python3 /home/pi/script.py &

rc.local 在运行我在文件中创建的回显后立即工作。

【问题讨论】:

  • 尝试在 python3 的路径中使用前导 /,例如 /usr/bin/python3
  • 从 put #!/usr/bin/python3 而不是 #!/usr/bin/env python3 开始。然后,如果您使用#!/usr/bin/python3 行,那么您只需使用chmod 使脚本可执行,并且需要简单调用sudo ./yourscript.py & 您可以使用#!/usr/bin/env python3 来实现跨不同系统的可移植性如果他们将语言解释器安装在不同的位置。如果 rc.local break 真的有问题,请尝试通过 init.d
  • 你设置了执行位吗? chmod +x /home/pi/script.py 使用python3 -m script.py 将它作为python 模块运行不需要这样做,但是像它自己的脚本一样运行它。此外,作为日志,您可能希望使用附加模式 f = open("log.txt", "a") 而不是覆盖模式。

标签: python python-3.x raspberry-pi raspbian rc


【解决方案1】:

最后我遇到的问题是脚本需要网络,所以我将它添加到crontab -e

还是不行,所以我改变了raspi-config,因为有网络等待网络的选项,但没有成功。

最后,由于那个解决方案也不起作用,我在命令中添加了一个 sleep 如下等待网络:

@reboot sleep 40 && /usr/bin/python3 /home/pi/script.py 

终于成功了。

【讨论】:

    猜你喜欢
    • 2016-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-18
    • 1970-01-01
    相关资源
    最近更新 更多