ฉันต้องรันโปรแกรมไพธอนเมื่อเริ่มต้น Ubuntu
สคริปต์ทำงานได้ทั้งจากโค้ด Visual Studio หรือจากเทอร์มินัลด้วยคำสั่ง:
ทุบตี -c "python3 /home/complete_path/script.py"
อย่างไรก็ตาม หากฉันใส่รหัสเดียวกันโดยใช้ "แอปพลิเคชันเริ่มต้น" รหัสจะถูกเรียกใช้แต่กลับแสดงข้อผิดพลาด
เพื่อให้เข้าใจว่าเกิดอะไรขึ้น ฉันลองใช้วิธีการอื่นๆ หลายวิธีเพื่อเรียกใช้ไฟล์ เช่น การแก้ไข local.rc ใช้บริการหรือ crontab แต่ผลลัพธ์ก็เหมือนเดิมเสมอ
ฉันพยายามเปิดใช้งานเทอร์มินัลโดยอัตโนมัติและดำเนินการคำสั่งเมื่อเริ่มต้นเทอร์มินัล แต่ผลลัพธ์ไม่เปลี่ยนแปลง
ความแตกต่างประเภทใดที่มีในคำสั่งที่รันเมื่อเริ่มต้นหรือโดยอัตโนมัติโดยเทอร์มินัลเทียบกับ
แทรกด้วยตนเอง? ฉันไม่สามารถเข้าใจได้ว่าเกิดอะไรขึ้น
ระบบนี้เป็น Jetson nano ที่ติดตั้ง Ubuntu 18.04
แก้ไข 1
เรียกใช้เป็นบริการดูเหมือนว่าไม่สามารถนำเข้าโมดูลหลามได้
-- การรีสตาร์ทยูนิต mything.service โดยอัตโนมัติได้รับการกำหนดเวลาแล้ว ซึ่งเป็นผลลัพธ์สำหรับ
-- การกำหนดค่า Restart= การตั้งค่าสำหรับหน่วย
gen 18 15:56:33 aisports-desktop systemd[1]: หยุดเรื่องโกหก: ทำเรื่องของตัวเอง
-- เรื่อง: Unit mything.service ปิดตัวลงแล้ว
-- กำหนดโดย: systemd
-- การสนับสนุน: http://www.ubuntu.com/support
--
-- Unit mything.service ปิดตัวลงเรียบร้อยแล้ว
gen 18 15:56:33 aisports-desktop systemd[1]: เริ่มเรื่องที่เป็นตำนาน: ทำเรื่องของตัวเอง
-- เรื่อง: Unit mything.service เริ่มทำงานเสร็จแล้ว
-- กำหนดโดย: systemd
-- การสนับสนุน: http://www.ubuntu.com/support
--
-- Unit mything.service เริ่มทำงานเสร็จแล้ว
--
-- ผลลัพธ์การเริ่มต้นคือ RESULT
gen 18 15:56:33 aissports-desktop mything.sh[7800]: Traceback (การโทรครั้งล่าสุดล่าสุด):
เจนเนอเรชั่น 18 15:56:33 aisports-desktop mything.sh[7800]: ไฟล์ "/home/aisports/Desktop/AISports/RGB_control_camera.py", บรรทัด 11, ใน <โมดูล>
gen 18 15:56:33 aisports-desktop mything.sh[7800]: นำเข้าความลึกเป็น dai
เจนเนอเรชั่น 18 15:56:33 aisports-desktop mything.sh[7800]: ModuleNotFoundError: ไม่มีโมดูลชื่อ 'ความลึกไท'
เจน 18 15:56:33 aisports-desktop systemd[1]: mything.service: ออกจากกระบวนการหลักแล้ว, รหัส=ออกแล้ว, สถานะ=1/ล้มเหลว
เจน 18 15:56:33 aisports-desktop systemd[1]: mything.service: ล้มเหลวด้วยผลลัพธ์ 'exit-code'
ในขณะที่ฉันยังไม่พบบันทึกของ crontab เนื่องจากคำสั่ง
grep CRON /var/log/syslog
ให้กลับ
ไฟล์ไบนารี /var/log/syslog ตรงกัน
แก้ไข 2
ฉันแก้ไขปัญหาโมดูลที่ขาดหายไปโดยเพิ่มเส้นทางของโมดูลนั้นที่ด้านบนสุดของสคริปต์ไพธอน
นำเข้าระบบ
sys.path.append('path_to_module')
ตอนนี้ปัญหาที่เกิดขึ้นเหมือนกับในกรณีของแอปพลิเคชันเริ่มต้น:
gen 18 18:08:31 aisports-desktop systemd[1]: หยุดเรื่องโกหก: ทำเรื่องของตัวเอง
-- เรื่อง: Unit mything.service ปิดตัวลงแล้ว
-- กำหนดโดย: systemd
-- การสนับสนุน: http://www.ubuntu.com/support
--
-- Unit mything.service ปิดตัวลงเรียบร้อยแล้ว
gen 18 18:08:31 aisports-desktop systemd[1]: เริ่มเป็นตำนาน: ทำสิ่งที่เป็นของฉันเอง
-- เรื่อง: Unit mything.service เริ่มทำงานเสร็จแล้ว
-- กำหนดโดย: systemd
-- การสนับสนุน: http://www.ubuntu.com/support
--
-- Unit mything.service เริ่มทำงานเสร็จแล้ว
--
-- ผลลัพธ์การเริ่มต้นคือ RESULT
เจน 18 18:08:32 aisports-desktop mything.sh[7763]: [2022-01-18 18:08:32.050] [คำเตือน] VideoEncoder setDefaultProfilePreset: การส่งผ่าน 'ความกว้าง'/ 'ความสูง' เลิกใช้แล้ว ขนาดจะถูกกำหนดโดยอัตโนมัติตั้งแต่แรก
gen 18 18:08:34 aisports-desktop mything.sh[7763]: Stack trace (การโทรครั้งล่าสุดล่าสุด):
เจน 18 18:08:34 aisports-desktop mything.sh[7763]: #2 Object "/lib/ld-linux-aarch64.so.1", ที่ 0x7fb4f57a33, ใน
เจน 18 18:08:34 aisports-desktop mything.sh[7763]: #1 Object "/usr/local/lib/python3.6/dist-packages/numpy/core/../../numpy.libs/ libopenblasp-r0-32ff4d91.3.13.so", ที่ 0x7fa055772b, ใน gotoblas_init
เจน 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", ที่ 0x7fa06d4f54, ใน gotoblas_dynamic_
เจน 18 18:08:34 aisports-desktop mything.sh[7763]: คำแนะนำที่ผิดกฎหมาย (รหัส opcode ที่ผิดกฎหมาย [0x7fa06d4f54])
เจน 18 18:08:35 aisports-desktop mything.sh[7763]: /usr/local/bin/mything.sh: บรรทัดที่ 2: 7779 คำสั่งที่ผิดกฎหมาย (คอร์ทิ้ง) python3 /home/aisports/Desktop/AISports/RGB_control_camera พาย
เจน 18 18:08:35 aisports-desktop systemd[1]: mything.service: ออกจากกระบวนการหลักแล้ว, รหัส=ออกแล้ว, สถานะ=132/n/a
เจน 18 18:08:35 aisports-desktop systemd[1]: mything.service: ล้มเหลวด้วยผลลัพธ์ 'exit-code'
แก้ไข 3 (ล่าสุด)
ในที่สุดฉันก็แก้ปัญหาได้
ในไฟล์ .bashrc ที่ฉันเพิ่มเข้าไป ส่งออก OPENBLAS_CORETYPE=ARMV8
เนื่องจากประเภทของโปรเซสเซอร์ ฉันคิดว่านั่นก็เพียงพอแล้วสำหรับคำสั่งเริ่มต้น แต่ก็ไม่เป็นเช่นนั้น การเพิ่มบรรทัดนั้นในสคริปต์เริ่มต้นก่อนที่จะเรียกสคริปต์ไพ ธ อนช่วยแก้ปัญหาได้
ขอบคุณ @FelixJN สำหรับการสนับสนุนการมีไฟล์บันทึก ซึ่งช่วยฉันได้มาก