我在 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 身份运行即可访问硬件?我错过了什么?
谢谢!