我有一个使用Google智能助理库的脚本,必须从那里导入一些模块。我发现这只适用于Python虚拟环境,这真的很奇怪。在同一个文件夹中,我有一个使用GPIO引脚的脚本,必须使用root。它们相互交互,因此当我启动GPIO脚本时,也会启动Assistant脚本。但由于某种原因,当脚本以root身份启动时,其中的模块无法导入。有人知道这个吗?
答案 0 :(得分:1)
通常,您可以激活虚拟环境并使用env中的解释器来运行您的脚本。但这没有必要。
假设您在路径/ 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
答案 1 :(得分:0)
尝试使用sudo安装模块。
我在python模块'reportlab'中遇到了同样的问题。我意识到我没有使用sudo命令就安装了pip(reportlab的安装管理器)。
问题在于该软件包(pip和reportlab)已作为用户而不是root用户安装了,因此当您尝试使用sudo时,它无法识别reportlab的系统路径,因为您从来没有安装过,只为用户安装了!
我建议始终使用sudo安装pip和模块:
$ 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
希望这会有所帮助!问候!
答案 2 :(得分:0)