Python rpi.GPIO 与 Snapcraft/snap?

Python rpi.GPIO 与 Snapcraft/snap?

我在尝试为 Rpi2 的简单 Python 代码构建快照时遇到了很大困难。

我想要放入 Snap 的代码是:

# External module imports
import RPi.GPIO as GPIO
import time

print("Hello LED")

ledPin = 9

print("Setting Broadcom Mode")
# Pin Setup:
GPIO.setmode(GPIO.BCM) # Broadcom pin-numbering scheme

GPIO.setup(ledPin, GPIO.OUT) 

print("Here we go! Press CTRL+C to exit")
try:
while 1:
        print ("OFF");
        GPIO.output(ledPin, GPIO.LOW)
        time.sleep(1.00)
        print ("ON");            
        GPIO.output(ledPin, GPIO.HIGH)
        time.sleep(1) 
except KeyboardInterrupt: # If CTRL+C is pressed, exit cleanly:
   GPIO.cleanup() # cleanup all GPIO

问题是我似乎没有在文档中找到如何导入 rpi.GPIO这可能吗?

搜索于https://github.com/ubuntu/snappy-playpen没有结果

这是个难题。更简单的问题是……如何使用 snap 执行 Python 脚本?我尝试输入:

apps:
  helloLed:
      command: sudo python helloLed.py 

并且没有sudo,之后它会触发权限错误。

提前谢谢您!完成后将发布完整的示例教程!

答案1

使用 Python3 插件添加它,OP 包含部分snapcraft.yaml,可能只需要编辑:

...
parts:
  plugin: python3
  python-packages:
    - RPi.GPIO
...

它还需要一个访问接口:

...
apps:
  ...
  plugs:
    - physical-memory-control
...

然后安装后用户应该连接它,因为该接口不是auto

sudo snap connect helloLed:physical-memory-control

参考: 你的第一个机器人:与他人分享 [5/5]

笔记

我仍有一些疑问:是否RPi.GPIO需要从源代码构建。如果是这种情况,则应将其声明为snapcraft.yaml一部分。请参阅链接的参考资料。

相关内容