python - Python脚本没有在启动时使用可执行文件运行,但如果我手动执行该文件,它就可以工作
问题描述
嘿,所以标题很好地描述了这个问题,在 PI 3B+ 上运行
这是如果我手动执行它会运行的launcher.sh:
#!/bin/sh
#launcher.sh
cd /
cd home/pi/SummerSeries2021
sudo python3 Main.py
cd /
这是启动时的启动日志
Traceback (most recent call last):
File "Main.py", line 21, in <module>
elif pirB.motion_detected:
File "/usr/lib/python3/dist-packages/gpiozero/input_devices.py", line 350, in is_active
return self.value > self.threshold
File "/usr/lib/python3/dist-packages/gpiozero/input_devices.py", line 604, in value
return super(MotionSensor, self).value
File "/usr/lib/python3/dist-packages/gpiozero/input_devices.py", line 325, in value
return self._queue.value
File "/usr/lib/python3/dist-packages/gpiozero/mixins.py", line 587, in value
return self.average(self.queue)
File "/usr/lib/python3.7/statistics.py", line 311, in mean
T, total, count = _sum(data)
File "/usr/lib/python3.7/statistics.py", line 147, in _sum
for n,d in map(_exact_ratio, values):
RuntimeError: deque mutated during iteration
这是它自己的python脚本:
import sys
from gpiozero import MotionSensor
from adafruit_motorkit import MotorKit
from adafruit_motor import stepper
import time
import board
kit = MotorKit()
pirS = MotionSensor(4)
pirB = MotionSensor(21)
#flushcons = 3
while True:
while True:
if pirS.motion_detected:
print("Petite")
for i in range(100):
kit.stepper1.onestep(style = stepper.DOUBLE)
for j in range(100):
kit.stepper1.onestep(direction = stepper.BACKWARD,style = stepper.DOUBLE)
break
elif pirB.motion_detected:
print("Grosse")
for k in range(100):
kit.stepper2.onestep(style = stepper.DOUBLE)
for l in range(100):
kit.stepper2.onestep(direction = stepper.BACKWARD,style = stepper.DOUBLE)
break
else:
print("RAS")
kit.stepper1.release()
kit.stepper2.release()
这是我添加到 crontab 的行
@reboot sh /home/pi/SummerSeries2021/launcher.sh >home/pi/logs/cronlog 2>&1
基本上,它会根据您挥动的 PIR 传感器激活 2 个步进电机中的一个,但我主要担心的是,如果我在 IDE 中运行脚本它可以工作,如果我在启动后手动执行启动器,它可以工作,但在启动器时不行.sh 使用 crontab 在启动时执行。
以前有人遇到过这个问题吗?
谢谢
解决方案
推荐阅读
- css - SCSS 在解析参数时显示错误
- postgresql - 无法通过 Play 框架服务器连接到 postgresql docker 容器
- apache-kafka - kafka 在哪里存储 zookeeper 上的元数据?(哪条路?)
- aws-lambda - SNS 订阅不是使用无服务器创建的
- python - 将变量从一个类更新到另一个类
- ubuntu - 'NoneType' 对象不可迭代 python3
- python - 如何连接文本文件中的行?
- javascript - 如何在 HTML 中正确调用 JS 函数?
- java - 是否可以从单独的类中停止计时器?
- android-studio - 可以在 Android Studio 中模拟 MQTT 代理吗?