![启动时无法初始化环境变量](https://linux22.com/image/147256/%E5%90%AF%E5%8A%A8%E6%97%B6%E6%97%A0%E6%B3%95%E5%88%9D%E5%A7%8B%E5%8C%96%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F.png)
我编写了一个 python 脚本,如果从控制台手动运行,它可以在树莓派上成功运行。由于我想在重新启动时启动脚本,因此我编写了一个 bash 脚本来更改目录、设置环境并运行 python 脚本。然而,在检查日志后,我注意到尝试导入库时出现错误。执行以下行后:
from openvino.inference_engine import IENetwork, IEPlugin
抛出错误:
Traceback (most recent call last):
File "realtime_objectdetection_and_tracking_async.py", line 23, in <module>
from custom_module... ImportError: No module named 'openvino.inference_engine'
如果我从控制台运行同一行,则不会出现错误:
pi@raspberrypi:~/workspace/counting-cars-with-backend-conn $ python3
Python 3.5.3 (default, Sep 27 2018, 17:25:39) [GCC 6.3.0 20170516] on
linux Type "help", "copyright", "credits" or "license" for more information.
>>> from openvino.inference_engine import IENetwork, IEPlugin
因此,在 OpenVINO 安装时将以下行添加到 .bashrc 中:
# OpenVINO
source ~/inference_engine_vpu_arm/bin/setupvars.sh
在运行 python 脚本之前,我尝试在启动脚本中执行相同的操作:
#!/bin/bash
source /home/pi/inference_engine_vpu_arm/bin/setupvars.sh
cd /home/pi/workspace/counting-cars-with-backend-conn
python3 realtime_objectdetection_and_tracking_async.py &
然后我通过运行 crontab -e 将脚本添加到 cron 表:
@reboot sh /home/pi/run_object_detection_and_tracking.sh
由于这不能解决问题(上面的 ImportError),我不知道应该额外配置/修改什么才能获得与从控制台运行 python 脚本相同的行为。
答案1
我建议将脚本放入 /etc/init.d 中,并将符号链接放入 /etc/rc5.d 中,并确保脚本为 chmod +x。这应该在与启动时终端具有相同可用内容的时间运行您的脚本。因此它不应该再抛出错误。
参考:Linux 上的运行级别