我有一个使用Google Assistant Library的脚本,需要从那里导入一些模块。我发现这只能在Python虚拟环境下运行,这真的很奇怪。在同一个文件夹中,我有一个使用GPIO引脚并需要使用root的脚本。它们之间互相交互,所以当我启动GPIO脚本时,Assistant脚本也会启动。但由于某种原因,在以root用户身份启动脚本时,其中的模块无法导入。是否有人知道这方面的问题?
我有一个使用Google Assistant Library的脚本,需要从那里导入一些模块。我发现这只能在Python虚拟环境下运行,这真的很奇怪。在同一个文件夹中,我有一个使用GPIO引脚并需要使用root的脚本。它们之间互相交互,所以当我启动GPIO脚本时,Assistant脚本也会启动。但由于某种原因,在以root用户身份启动脚本时,其中的模块无法导入。是否有人知道这方面的问题?
通常情况下,您可以激活虚拟环境并使用环境内的解释器来运行脚本。但这并非必需。
假设您在路径 /path-to-env/env 下有一个虚拟环境,要运行的脚本 example.py 在路径 /path-to-script/example.py 下。
您可以直接运行此 example.py,例如:
sudo /path-to-env/env/bin/python /path-to-script/example.py
最后我只是以管理员身份安装了Python包,一切都正常工作了。 在我的情况下,是通过命令sudo pip3 install findpi
进行安装的,然后以sudo findpi
的方式执行,工作正常。
$ sudo add-apt-repository universe
$ sudo apt update
$ sudo curl https://bootstrap.pypa.io/get-pip.py --output get-pip.py
$ sudo python2 get-pip.py
$ sudo pip install google-assistant-library
$ sudo apt-get update
$ sudo apt-get install python3-dev python3-venv
$ sudo python3 -m venv env
$ sudo env/bin/python -m pip install --upgrade pip setuptools
$ sudo source env/bin/activate
$ sudo python -m pip install --upgrade google-assistant-library
sudo
运行在不同的环境下,您的用户安装的软件包不可用。听起来像是您遇到的问题?为什么不以 root 身份激活虚拟环境呢? - OneCricketeersudo su
。 - erip