将 RPi.GPIO 导入 python 脚本时出错

Error when importing RPi.GPIO into python script

我有一个名为 main.py 的 python 脚本,它使用 import RPi.GPIO as GPIO 导入 RPi.GPIO 库 当我 运行 使用 python3 main.py 的脚本时,我收到一条错误消息,指出 RPi.GPIO 未找到。如果我 运行 main.py 使用 sudo python3 main.py 那么一切 运行 都很好。

我使用 tar.gz 文件安装了 RPi.GPIO。我将它复制到我的 /home/pi/work 目录,并在同一目录中提取压缩包。然后我切换到提取的目录并使用 sudo python3 setup.py install 安装 RPi.GPIO。

因为我通常不使用 linux 我不完全理解权限,我确信这是导致此问题的原因。我猜,因为我使用 sudo 安装,所以这个包只对 sudo 用户可用。问题是我从 rc.local 文件启动这个程序,而 main.py 脚本在启动时不会 运行 使用 RPi.GPIO import 语句。如果我删除导入语句,它将按预期启动。下面是启动程序 rc.local 文件中的代码 su -l pi -c '/usr/bin/python3 /home/pi/Work/main.py &' 我尝试将 su 更改为 sudo 但那没有用。

我可以通过其他方式安装 RPi.GPIO 或更改 rc.local 脚本来实现此功能吗?另外仅供参考,我的 pi 没有互联网连接,所以我无法使用 APT-GET 卸载或安装软件包。

另外,以防万一你们中的一些人想知道这个包是否安装正确。如果我以 sudo python3 开始 python,我得到 >>>。然后我输入 import RPi.GPIO as GPIO 我又得到了 >>> 。然后我输入 GPIO.VERSION 它会显示我安装的正确版本。任何帮助将不胜感激。

更新 我没有为 rc.local 文件创建代码,而是仔细查看了它。我发现的语句 su -l pi -c '/usr/bin/python3 /home/pi/Work/main.py &' 将用户从 root 更改为 pi 并在 pi 用户下执行脚本。所以我尝试将语句更改为 su -l sudo -c '/usr/bin/python3 /home/pi/Work/main.py &' 认为因为我可以 运行 main.py 通过使用 sudo python3 main.py 将 rc.local 文件中的用户从 pi 更改为 sudo将作为 sudo 执行文件。它仍然不起作用。然后我尝试从 rc.local 命令和 运行 中删除 su 命令,就像这样 /usr/bin/python3 /home/pi/Work/main.py & 但这也没有用。有人对我如何让它工作有任何建议吗?

为了在 Python、Linux 或任何 OS 进行开发,人们几乎总是会使用 virtualenv,每个 python 项目一个 I想发展。

virtualenv 易于设置,一旦激活,您可以执行 pip install 命令而无需使用 sudo。尝试设置 virtualenv 并通过 pip 安装 GPIO。

即使您没有设置 virtualenv 来帮助管理您的 Python 项目的包,您仍然可以 use pip 安装 GPIO,但是您将面临权限问题现在正在处理。

但是,你很幸运! Raspbian 上已安装 GPIO。打开终端并输入 python。进入 Python 解释器后,输入 import RPi.GPIO。如果出现错误,则表明您的安装存在真正的问题,但可以通过使用 virtualenv 轻松解决。这可能有助于了解您的默认 python 和 python --version.

Pip 在概念上类似于 apt 包管理器,您可能在 Raspberry Pi 中使用它来安装其他软件。它是 Python 的包管理器,基本上是您可以在命令行上立即安装的库的注册表。

命令行是您在树莓派上的朋友,尤其是在开发原创软件时。

祝你好运!

尝试在运行python脚本之前用sleep编写bash脚本并放入rc.local

#!/bin/sh

sleep 5
python python_script.py &

不要忘记使脚本可执行:chmod 755 yourscript.sh