使用sudo启动时,Python无法找到模块

时间:2017-06-11 12:51:27

标签: python module root gpio google-assistant-sdk

我有一个使用Google智能助理库的脚本,必须从那里导入一些模块。我发现这只适用于Python虚拟环境,这真的很奇怪。在同一个文件夹中,我有一个使用GPIO引脚的脚本,必须使用root。它们相互交互,因此当我启动GPIO脚本时,也会启动Assistant脚本。但由于某种原因,当脚本以root身份启动时,其中的模块无法导入。有人知道这个吗?

3 个答案:

答案 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和模块:

对于python 2:

$ 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

对于python 3(来自Docs 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)

不是 100% 确定,但您是否尝试过:

sudo -E python myScriptName.py

如前所述here