如何从脚本 运行 虚拟环境中的程序
How to run a programme inside a virtual environment from a script
我已经在我的 Raspberry Pi 上设置了 google 助手 sdk,如下所示:https://developers.google.com/assistant/sdk/prototype/getting-started-pi-python/run-sample
现在为了重新运行助手我搞定了两条命令是
$ source env/bin/activate
和
(env) $ google-assistant-demo
但是我想将这个过程自动化到一个脚本中,我可以从 rc.local
(后跟一个 &
)调用,以便让助手从启动开始。
但是如果我运行一个简单的脚本
#!/bin/bash
source env/bin/activate
google-assistant-demo
助手不在运行环境里面
我的环境路径是 /home/pi/env/bin/activate
我怎样才能让脚本启动环境,然后运行在虚拟环境中设置助手?
编辑:最后我采用了以下方法:
以此为基础:
https://youtu.be/ohUszBxuQA4?t=774 – 感谢 Eric Parisot
您需要 download the src file 他使用并将其内容提取到 /home/pi/src/
但是有一些变化。
我没有 运行 gassist.sh
作为 sudo
,因为它给了我以下错误:
OpenAlsaHandle PcmOpen: No such file or directory
[7689:7702:ERROR:audio_input_processor.cc(756)] Input error
ON_MUTED_CHANGED:
{‘is_muted’: False}
ON_START_FINISHED
ON_ASSISTANT_ERROR:
{‘is_fatal’: True}
[7689:7704:ERROR:audio_input_processor.cc(756)] Input error
ON_ASSISTANT_ERROR:
{‘is_fatal’: True}
修复:不要 运行 作为 sudo
如果 gassist.sh
给出关于 RPi.GPIO
的错误,您需要执行 https://youtu.be/ohUszBxuQA4?t=580:
$ cd /home/pi/env/bin
$ source activate
(env) $ pip install RPi.GPIO
(env) $ deactivate
然后我做了 sudo nano /etc/profile
并将其附加到末尾:
#Harvs was here on 24/06/17
if pidof -x "gassist.sh" >/dev/null; then
echo ""
echo "/etc/profile says:"
echo "An instance of Google Assistant is already running, will not start again"
echo ""
else
echo "Starting Google Assistant..."
echo "If you are seeing this, perhaps you have SSH within seconds of reboot"
/home/pi/src/gassist.sh &
fi
现在它在虚拟环境中完美运行:)
来自 rc.local
的脚本 运行 在根目录中执行(或者可能在 root
用户的主目录中,我认为这取决于发行版?)
简单的解决方法是编写环境的完整路径。
#!/bin/bash
source /home/pi/env/bin/activate
google-assistant-demo
# or maybe /home/pi/google-assistant-demo
rc.local
中无需显式设置任何背景
在这里找到解决方案:https://raspberrypi.stackexchange.com/a/45089
在您的根目录中创建一个启动 shell 脚本(我将我的命名为 "launch"),使其也可执行:
sudo nano launch.sh
我是这样写的:
#!/bin/bash
source /home/pi/env/bin/activate
/home/pi/env/bin/google-assistant-demo
保存文件
编辑 LXDE-pi 自动启动文件
sudo nano /home/pi/.config/lxsession/LXDE-pi/autostart
将其添加到该文件的底部
./launch.sh
重启
最后我采用了以下方法:
以此为基础:https://youtu.be/ohUszBxuQA4?t=774 – 感谢 Eric Parisot
但是有一些变化。
您需要 download the src file 他使用并将其内容提取到 /home/pi/src/
我没有 运行 gassist.sh
作为 sudo
,因为它给了我以下错误:
OpenAlsaHandle PcmOpen: No such file or directory
[7689:7702:ERROR:audio_input_processor.cc(756)] Input error
ON_MUTED_CHANGED:
{‘is_muted’: False}
ON_START_FINISHED
ON_ASSISTANT_ERROR:
{‘is_fatal’: True}
[7689:7704:ERROR:audio_input_processor.cc(756)] Input error
ON_ASSISTANT_ERROR:
{‘is_fatal’: True}
修复:不要 运行 作为 sudo
如果 gassist.sh
给出关于 RPi.GPIO
的错误,您需要执行 https://youtu.be/ohUszBxuQA4?t=580:
$ cd /home/pi/env/bin
$ source activate
(env) $ pip install RPi.GPIO
(env) $ deactivate
然后我做了 sudo nano /etc/profile
并将其附加到末尾:
#Harvs was here on 24/06/17
if pidof -x "gassist.sh" >/dev/null; then
echo ""
echo "/etc/profile says:"
echo "An instance of Google Assistant is already running, will not start again"
echo ""
else
echo "Starting Google Assistant..."
echo "If you are seeing this, perhaps you have SSH within seconds of reboot"
/home/pi/src/gassist.sh &
fi
现在它运行完美,在虚拟环境中,在启动到 CLI 模式! :)
我已经在我的 Raspberry Pi 上设置了 google 助手 sdk,如下所示:https://developers.google.com/assistant/sdk/prototype/getting-started-pi-python/run-sample
现在为了重新运行助手我搞定了两条命令是
$ source env/bin/activate
和
(env) $ google-assistant-demo
但是我想将这个过程自动化到一个脚本中,我可以从 rc.local
(后跟一个 &
)调用,以便让助手从启动开始。
但是如果我运行一个简单的脚本
#!/bin/bash
source env/bin/activate
google-assistant-demo
助手不在运行环境里面
我的环境路径是 /home/pi/env/bin/activate
我怎样才能让脚本启动环境,然后运行在虚拟环境中设置助手?
编辑:最后我采用了以下方法:
以此为基础: https://youtu.be/ohUszBxuQA4?t=774 – 感谢 Eric Parisot
您需要 download the src file 他使用并将其内容提取到 /home/pi/src/
但是有一些变化。
我没有 运行 gassist.sh
作为 sudo
,因为它给了我以下错误:
OpenAlsaHandle PcmOpen: No such file or directory
[7689:7702:ERROR:audio_input_processor.cc(756)] Input error
ON_MUTED_CHANGED:
{‘is_muted’: False}
ON_START_FINISHED
ON_ASSISTANT_ERROR:
{‘is_fatal’: True}
[7689:7704:ERROR:audio_input_processor.cc(756)] Input error
ON_ASSISTANT_ERROR:
{‘is_fatal’: True}
修复:不要 运行 作为 sudo
如果 gassist.sh
给出关于 RPi.GPIO
的错误,您需要执行 https://youtu.be/ohUszBxuQA4?t=580:
$ cd /home/pi/env/bin
$ source activate
(env) $ pip install RPi.GPIO
(env) $ deactivate
然后我做了 sudo nano /etc/profile
并将其附加到末尾:
#Harvs was here on 24/06/17
if pidof -x "gassist.sh" >/dev/null; then
echo ""
echo "/etc/profile says:"
echo "An instance of Google Assistant is already running, will not start again"
echo ""
else
echo "Starting Google Assistant..."
echo "If you are seeing this, perhaps you have SSH within seconds of reboot"
/home/pi/src/gassist.sh &
fi
现在它在虚拟环境中完美运行:)
来自 rc.local
的脚本 运行 在根目录中执行(或者可能在 root
用户的主目录中,我认为这取决于发行版?)
简单的解决方法是编写环境的完整路径。
#!/bin/bash
source /home/pi/env/bin/activate
google-assistant-demo
# or maybe /home/pi/google-assistant-demo
rc.local
在这里找到解决方案:https://raspberrypi.stackexchange.com/a/45089
在您的根目录中创建一个启动 shell 脚本(我将我的命名为 "launch"),使其也可执行:
sudo nano launch.sh
我是这样写的:
#!/bin/bash
source /home/pi/env/bin/activate
/home/pi/env/bin/google-assistant-demo
保存文件
编辑 LXDE-pi 自动启动文件
sudo nano /home/pi/.config/lxsession/LXDE-pi/autostart
将其添加到该文件的底部
./launch.sh
重启
最后我采用了以下方法:
以此为基础:https://youtu.be/ohUszBxuQA4?t=774 – 感谢 Eric Parisot
但是有一些变化。
您需要 download the src file 他使用并将其内容提取到 /home/pi/src/
我没有 运行 gassist.sh
作为 sudo
,因为它给了我以下错误:
OpenAlsaHandle PcmOpen: No such file or directory
[7689:7702:ERROR:audio_input_processor.cc(756)] Input error
ON_MUTED_CHANGED:
{‘is_muted’: False}
ON_START_FINISHED
ON_ASSISTANT_ERROR:
{‘is_fatal’: True}
[7689:7704:ERROR:audio_input_processor.cc(756)] Input error
ON_ASSISTANT_ERROR:
{‘is_fatal’: True}
修复:不要 运行 作为 sudo
如果 gassist.sh
给出关于 RPi.GPIO
的错误,您需要执行 https://youtu.be/ohUszBxuQA4?t=580:
$ cd /home/pi/env/bin
$ source activate
(env) $ pip install RPi.GPIO
(env) $ deactivate
然后我做了 sudo nano /etc/profile
并将其附加到末尾:
#Harvs was here on 24/06/17
if pidof -x "gassist.sh" >/dev/null; then
echo ""
echo "/etc/profile says:"
echo "An instance of Google Assistant is already running, will not start again"
echo ""
else
echo "Starting Google Assistant..."
echo "If you are seeing this, perhaps you have SSH within seconds of reboot"
/home/pi/src/gassist.sh &
fi
现在它运行完美,在虚拟环境中,在启动到 CLI 模式! :)