6

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

4

4 回答 4

7

通常你可以激活一个虚拟环境并使用环境中的解释器来运行你的脚本。但这不是必需的。

假设您在路径 /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
于 2017-06-11T14:03:05.287 回答
2

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

sudo -E python myScriptName.py

正如这里提到的

于 2021-03-14T14:44:45.290 回答
1

尝试使用 sudo 安装模块。

我对 python 的模块“reportlab”有同样的问题。我意识到我在没有 sudo 命令的情况下安装了 pip(reportlab 的安装程序管理器)。

问题是软件包(pip 和 reportlab)已作为用户而不是 root 安装,因此当您尝试使用 sudo 时,它无法识别到 reportlab 的系统路径,因为您从未安装过,仅用于用户!

我建议始终使用 sudo 安装 pip 和模块:

对于蟒蛇 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

希望这可以帮助!问候!

于 2020-08-20T13:57:36.753 回答
0

我最终只是将 python 包安装为 sudo 并且效果很好。就我而言,它是sudo pip3 install findpi然后执行sudo findpi并有效。

于 2021-11-05T03:38:38.787 回答