[英]Error when importing RPi.GPIO into python script
我有一个名为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, sudo python3
得到>>>。 然后,我再次输入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
运行sudo python3 main.py
,所以在rc.local文件中将用户从pi更改为sudo会将文件作为sudo执行。 它仍然不起作用。 然后,我尝试从rc.local命令中删除su命令,并像/usr/bin/python3 /home/pi/Work/main.py &
这样/usr/bin/python3 /home/pi/Work/main.py &
但这也没有用。 有人对我如何使它起作用有任何建议吗?
对于在Linux或任何操作系统上使用Python开发,几乎总是会使用virtualenv ,对于我要开发的每个python项目都使用一个virtualenv 。
virtualenv易于设置,并且一旦激活,您就可以执行pip install
命令,而无需使用sudo
。 尝试设置一个virtualenv并通过pip安装GPIO。
即使您没有设置virtualenv来帮助您的Python项目进行程序包管理,您仍然可以使用pip安装GPIO,但是您将面临现在要处理的权限问题。
但是,您真幸运! GPIO已安装在Raspbian上。 打开终端并输入python
。 进入Python解释器后,输入import RPi.GPIO
。 如果出现错误,则说明安装确实存在问题,但是可以使用virtualenv轻松解决。 使用python --version
可以知道哪个是您的默认python。
Pip在概念上类似于您可能与Raspberry Pi一起用于安装其他软件的apt
软件包管理器。 它是Python的软件包管理器,基本上是一个库注册表,您可以在命令行上立即安装它。
在RPi上,命令行是您的朋友,特别是在开发原始软件时。
祝好运!
在运行python脚本并将其放入rc.local
之前,尝试使用睡眠编写bash脚本
#!/bin/sh
sleep 5
python python_script.py &
不要忘记使脚本可执行: chmod 755 yourscript.sh
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.