将RPi.GPIO导入python脚本

时间:2018-12-06 02:14:05

标签: python linux raspberry-pi raspbian

我有一个名为main.py的python脚本,该脚本使用import RPi.GPIO as GPIO导入RPi.GPIO库 当我使用python3 main.py运行脚本时,出现一条错误,指出未找到RPi.GPIO。如果我使用sudo python3 main.py运行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 &',以为既然可以通过使用sudo python3 main.py运行main.py,那么将rc.local文件中的用户从pi更改为sudo会将文件执行为sudo。它仍然不起作用。然后,我尝试从rc.local命令中删除su命令,并像这样/usr/bin/python3 /home/pi/Work/main.py &运行,但这也行不通。有人对我如何使它起作用有任何建议吗?

2 个答案:

答案 0 :(得分:0)

在Linux或任何操作系统上使用Python开发时,几乎都会使用virtualenv,对于我要开发的每个python项目,它都会使用一个。{p>

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

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

但是,您很幸运! GPIO已安装在Raspbian上。打开终端,然后输入python。进入Python解释器后,输入import RPi.GPIO。如果出现错误,则说明安装确实存在问题,但是可以使用virtualenv轻松解决。使用python --version可以知道哪个是您的默认python。

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

在RPi上,命令行是您的朋友,特别是在开发原始软件时。

祝你好运!

答案 1 :(得分:0)

在运行python脚本并将其放入rc.local

之前,尝试编写带有睡眠的bash脚本
#!/bin/sh

sleep 5
python python_script.py &

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