作为普通(非 root)用户,如何使用 Adafruit-Blinka Python 库?

作为普通(非 root)用户,如何使用 Adafruit-Blinka Python 库?

我在 Raspberry Pi 3b+ 上运行的 Ubuntu Server 20.04 LTS 上运行 Python 3.8.2。我安装了 python3-pip 以及 python-is-python3。我目前没有使用 venv,因为这将是 RPi 上唯一的应用程序。

我想在 RPi 上的 Python 程序中使用 Adafruit-Blinka 库。我已将其安装为 root:

sudo pip3 安装--升级 Adafruit-Blinka

这是我的测试程序:

import board
import digitalio
import busio

print("Hello blinka!")

# Try to get a Digital input
pin = digitalio.DigitalInOut(board.D4)
print("Digital IO ok!")

# Try to create an I2C device
i2c = busio.I2C(board.SCL, board.SDA)
print("I2C ok!")

# Try to create an SPI device
spi = busio.SPI(board.SCLK, board.MOSI, board.MISO)
print("SPI ok!")

print("done!")

以 root 身份运行它可以正常工作:

sudo python blinkatest.py 

生成:

sbn@ubuntu:~$ sudo python blinkatest.py
Hello blinka!
Digital IO ok!
I2C ok!
SPI ok!
done!
sbn@ubuntu:~$

以非 root 身份运行会产生:

sbn@ubuntu:~$ python blinkatest.py
Hello blinka!
Traceback (most recent call last):
  File "blinkatest.py", line 8, in <module>
    pin = digitalio.DigitalInOut(board.D4)
  File "/usr/local/lib/python3.8/dist-packages/digitalio.py", line 106, in __init__
    self.direction = Direction.INPUT
  File "/usr/local/lib/python3.8/dist-packages/digitalio.py", line 136, in direction
    self._pin.init(mode=Pin.IN)
  File "/usr/local/lib/python3.8/dist-packages/adafruit_blinka/microcontroller/bcm283x/pin.py", line 37, in init
    GPIO.setup(self.id, GPIO.IN)
RuntimeError: No access to /dev/mem.  Try running as root!
sbn@ubuntu:~$

那么,有没有办法在 RPi 上的 Ubuntu Server 上运行 Python 程序,无需以 root 身份运行即可访问硬件?我错过了什么?

谢谢!

相关内容