Trebuie să execut un program Python la pornirea Ubuntu.
Scriptul funcționează fie rulat din codul de studio vizual, fie de la terminal cu comanda:
bash -c „python3 /home/complete_path/script.py”
Cu toate acestea, dacă pun același cod folosind „aplicațiile de pornire”, codul este rulat, dar dă înapoi o eroare.
Pentru a înțelege ce se întâmplă, am încercat multe alte metode pentru a rula fișierul, cum ar fi modificarea serviciului de utilizare local.rc sau crontab, dar rezultatul este întotdeauna același.
De asemenea, am încercat să lansez automat terminalul și să execut comanda la pornirea terminalului, dar rezultatul nu este schimbat.
Ce fel de diferențe există într-o comandă rulată la pornire sau automat de către un terminal vs
le introduc manual? Nu pot să-mi dau seama ce se întâmplă.
Sistemul este un Jetson nano cu Ubuntu 18.04 instalat.
EDITARE 1
rulându-l ca serviciu, se pare că nu poate importa un modul Python
-- Repornirea automată a unității mything.service a fost programată, ca rezultat pentru
-- setarea configurată Restart= pentru unitate.
gen 18 15:56:33 aisports-desktop systemd[1]: Am oprit mitul: fă-mi treaba.
-- Subiect: Unitatea mything.service s-a încheiat
-- Definit de: systemd
-- Asistență: http://www.ubuntu.com/support
--
-- Unitatea mything.service s-a încheiat.
gen 18 15:56:33 aisports-desktop systemd[1]: A început mitul: fă-mi treaba.
-- Subiect: Unitatea mything.service a terminat pornirea
-- Definit de: systemd
-- Asistență: http://www.ubuntu.com/support
--
-- Unitatea mything.service a terminat de pornire.
--
-- Rezultatul la pornire este REZULTAT.
gen 18 15:56:33 aisports-desktop mything.sh[7800]: Traceback (cel mai recent apel ultimul):
gen 18 15:56:33 aisports-desktop mything.sh[7800]: fișierul „/home/aisports/Desktop/AISports/RGB_control_camera.py”, rândul 11, în <modul>
gen 18 15:56:33 aisports-desktop mything.sh[7800]: import depthai ca dai
gen 18 15:56:33 aisports-desktop mything.sh[7800]: ModuleNotFoundError: Niciun modul numit „depthai”
gen 18 15:56:33 aisports-desktop systemd[1]: mything.service: Proces principal ieșit, cod=ieșit, stare=1/Eșec
gen 18 15:56:33 aisports-desktop systemd[1]: mything.service: Eșuat cu rezultatul „cod de ieșire”.
în timp ce încă nu pot găsi jurnalul crontab, de la comanda
grep CRON /var/log/syslog
dă înapoi
Fișierul binar /var/log/syslog se potrivește
EDITARE 2
Am rezolvat problema modulului lipsă, adăugând calea acelui modul în partea de sus a scriptului Python
import sys
sys.path.append('path_to_module')
acum problema care apare este aceeași ca și în cazul aplicațiilor de pornire:
gen 18 18:08:31 aisports-desktop systemd[1]: Am oprit mitul: fă-mi treaba.
-- Subiect: Unitatea mything.service s-a încheiat
-- Definit de: systemd
-- Asistență: http://www.ubuntu.com/support
--
-- Unitatea mything.service s-a încheiat.
gen 18 18:08:31 aisports-desktop systemd[1]: A început mitul: fă-mi treaba.
-- Subiect: Unitatea mything.service a terminat pornirea
-- Definit de: systemd
-- Asistență: http://www.ubuntu.com/support
--
-- Unitatea mything.service a terminat de pornire.
--
-- Rezultatul la pornire este REZULTAT.
gen 18 18:08:32 aisports-desktop mything.sh[7763]: [2022-01-18 18:08:32.050] [avertisment] VideoEncoder setDefaultProfilePreset: trecerea „lățime”/ „înălțime” este învechită. Mărimea este determinată automat de la prima
gen 18 18:08:34 aisports-desktop mything.sh[7763]: Urmărirea stivei (cel mai recent apel ultimul):
gen 18 18:08:34 aisports-desktop mything.sh[7763]: #2 Obiect „/lib/ld-linux-aarch64.so.1”, la 0x7fb4f57a33, în
gen 18 18:08:34 aisports-desktop mything.sh[7763]: #1 Obiect „/usr/local/lib/python3.6/dist-packages/numpy/core/../../numpy.libs/ libopenblasp-r0-32ff4d91.3.13.so", la 0x7fa055772b, în gotoblas_init
gen 18 18:08:34 aisports-desktop mything.sh[7763]: #0 Object „/usr/local/lib/python3.6/dist-packages/numpy/core/../../numpy.libs/ libopenblasp-r0-32ff4d91.3.13.so", la 0x7fa06d4f54, în gotoblas_dynamic_
gen 18 18:08:34 aisports-desktop mything.sh[7763]: instrucțiuni ilegale (opcode ilegal [0x7fa06d4f54])
gen 18 18:08:35 aisports-desktop mything.sh[7763]: /usr/local/bin/mything.sh: line 2: 7779 Instrucțiuni ilegale (core dumping) python3 /home/aisports/Desktop/AISports/RGB_control_camera. py
gen 18 18:08:35 aisports-desktop systemd[1]: mything.service: Proces principal ieșit, cod=ieșit, stare=132/n/a
gen 18 18:08:35 aisports-desktop systemd[1]: mything.service: a eșuat cu rezultatul „cod de ieșire”.
EDITARE 3 (ultima)
In sfarsit am rezolvat problema.
în fișierul .bashrc pe care l-am adăugat exportați OPENBLAS_CORETYPE=ARMV8
din cauza tipului procesorului. Am crezut că a fost suficient și pentru comenzile de pornire, în schimb nu a fost. Adăugarea acelei linii la scriptul de pornire, înainte de a apela script-ul python a rezolvat problema.
Vă mulțumesc @FelixJN pentru sprijinul acordat pentru a avea fișierele jurnal, care m-au ajutat foarte mult.