启动时无法初始化环境变量

启动时无法初始化环境变量

我编写了一个 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 上的运行级别

相关内容