serial.serialutil.SerialException:无法打开端口 /dev/ttyAMA0:[Errno 13] 权限被拒绝:'/dev/ttyAMA0'

serial.serialutil.SerialException: could not open port /dev/ttyAMA0: [Errno 13] Permission denied: '/dev/ttyAMA0'

我有一个 Raspberry,我正在尝试连接到 Ubidots IOT 云,但出现此错误:

pi@raspberrypi:~/Downloads/raspbiDaniela/Ver 2016/ZonrProject $ python main.py
    Traceback (most recent call last):
      File "main.py", line 124, in <module>
        main()
      File "main.py", line 21, in main
        ser = serial.Serial(port=port, baudrate=baud)
      File "/usr/lib/python2.7/dist-packages/serial/serialutil.py", line 261, in __init__
        self.open()
      File "/usr/lib/python2.7/dist-packages/serial/serialposix.py", line 278, in open
        raise SerialException("could not open port %s: %s" % (self._port, msg))
    serial.serialutil.SerialException: could not open port /dev/ttyAMA0: [Errno 13] Permission denied: '/dev/ttyAMA0'

您不需要像评论中建议的那样每次都使用 sudo 运行 脚本,但您需要确保您拥有 /dev/ttyAMA0 的 read/write 权限。您可以使用以下方式修改权限:

sudo chmod 666 /dev/ttyAMA0

如果设备是可拆卸的,您还可以考虑创建一个 udev 规则,它会在您每次连接时应用正确的权限。您可以在 Debian's wiki.

阅读更多关于 udev 规则的信息

我在通过串口打开 SSH 时遇到了这个问题。当我关闭它并仅通过 sudo raspi-config 打开串行接口时,一切正常,没有权限问题。

希望对其他开发者有所帮助。