![](/img/trans.png)
[英]Running an OpenVINO Python script on boot for Raspberry PI
[英]Problem running python script at boot raspberry pi
我的腳本在啟動時遇到了很多麻煩,我嘗試了無數方法並花了幾個小時試圖讓它工作。
我有一個需要在啟動時運行的 python 腳本。 但是,它需要訪問互聯網,所以我必須等待網絡。
在我嘗試過的幾個教程中,我嘗試了很多方法,使用 crontab,使用 systemd 和 rc.local 提供服務,但是這些都沒有奏效。
我能夠工作的唯一方法是執行 a.desktop Desktop Entry,但這僅在我插入外接顯示器時才對我有用,並且我的樹莓派將在沒有顯示器的情況下運行。
此外,我能夠使用 service 方法運行我的腳本,現在使用 rc.local
通過添加這一行:
sudo bash -c '/usr/bin/python3 /home/pi/Projects/capstone/main.py > /home/pi/capstone.log 2>&1' &
但是,在我嘗試運行的 python 腳本中,我有以下代碼:
os.system("sudo killall servod")
time.sleep(1)
os.system('sudo ~/PiBits/ServoBlaster/user/./servod')
由於某種原因,它沒有正確運行我的腳本,因為我在日志中收到以下錯誤:
servod: no process found
sudo: /root/PiBits/ServoBlaster/user/./servod: command not found
第一個是預期的,因為我運行 sudo killall servod 時可能會或可能不會啟動,但是第二個“找不到命令”是問題所在,如果那段代碼沒有被執行,我的程序不會工作。
那里的任何人都可以幫助我解決這個問題嗎?
代替:
os.system('sudo ~/PiBits/ServoBlaster/user/./servod')
和:
os.system('sudo /home/pi/PiBits/ServoBlaster/user/./servod')
您也可以嘗試將腳本復制到 /etc/init.d 並將其作為 init.d 腳本運行。 您確實需要將以下內容添加到您的腳本中:
### BEGIN INIT INFO
# Provides: scriptname
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start daemon at boot time
# Description: Enable service provided by daemon.
### END INIT INFO
sudo chmod +x <yourscript.py>
sudo update-rc.d <yourscript.py> defaults
您可以輕松地等待 python 腳本中的網絡的一種方法是 ping 服務器直到成功 - 在本例中為 Google。
def wait_for_network():
while os.system("ping -c 1 8.8.8.8") != 0:
time.sleep(1)
return
至於在啟動時運行腳本,我建議編輯/etc/xdg/lxsession/LXDE-pi/autostart
並在其中添加您的 python 腳本,格式為
@python3 home/pi/your_script.py
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.