首页 > 解决方案 > 从 py 脚本在虚拟环境中调用命令

问题描述

我对编码和软件很陌生,所以请坚持下去。我正在尝试通过 Python 脚本在我的 Raspberry Pi 终端中执行命令。我希望能够从桌面运行这个 pi 脚本。要执行的命令(rpi-deep-pantilt-env) pi@raspberrypi:~/rpi-deep-pantilt $ rpi-deep-pantilt detect如您所见,我需要 cd 进入 rpi-deep-pantilt,然后激活我的虚拟环境,然后通过 py 脚本运行命令。

标签: pythonvirtualenvcd

解决方案


一个简单的 shell 脚本来做你所要求的:

#!/bin/sh
cd "$HOME"/rpi-deep-pantilt
. ./rpi-deep-pantilt-env/bin/activate
./rpi-deep-pantilt detect "$@"

大多数或所有这些可能是不必要的。我猜你可以跑

#!/bin/sh
d="$HOME"/rpi-deep-pantilt
exec "$d"/rpi-deep-pantilt-env/bin/python "$d"/rpi-deep-pantilt detect "$@"

但是,如果您的 Python 脚本具有硬编码的文件路径,需要它在特定目录中运行,那么这是一个错误,它将阻止它工作。

"$@"表示要传递任何命令行参数,因此如果您将此脚本保存为,pantrunningpant blind mice将传递参数blind并传递mice给您的 Python 脚本。(当然,如果它在 之后不接受其他命令行参数detect,这并不重要,但我仍然会将它们传递给您,以便您可以生成错误消息,而不是让它们被忽略,就好像它们不存在一样。 )


推荐阅读