我收到了一个需要(除其他外)的Python脚本:
import serial
import serial.tools.list_ports
(我正在使用
pipenv
,但假设这与 pip
相同。)
当我安装
pyserial
时,运行脚本会重复出现错误:
get_com_port_frame: 'Serial' object has no attribute 'set_buffer_size'
(Re)starting frames com port: /dev/cu.usbmodem21401
当我安装
serial
时,我得到:
>>> import serial
>>> import serial.tools.list_ports
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'serial.tools'
使用 Python 3.12.3 在 M1 芯片上运行 macOS Sonoma 14.4
我错过了什么?有什么办法解决吗?
很难说你的问题是什么,无法访问
get_com_port_frame
的原始来源,以及开发和执行它的上下文,但基于导入,似乎你应该安装 pyserial ,它具有 serial.tools.list_ports
您尝试导入的模块。 serial 包似乎不相关,只是碰巧共享相同的命名空间。
set_buffer_size
函数似乎已经存在了9年,所以我怀疑你的问题是版本问题,除非你使用的是这个类的史前版本。
我的预感是你在这里没有使用预期的
Serial
类——导入的函数位于该类的 win32 版本中,在注释下有 - platform specific -
。它也不在 serial.Serial
类的文档中。
是否您继承的脚本可以在 Windows 上运行,但您正在移植到其他平台,而某些假设不再成立?您确实在答案中提到在 Mac 上运行,所以这似乎是可能的。为了确认这一点,我会在出现属性错误时检查对象,看看它到底是什么类,因为
pyserial
的源代码有很多类名称 Serial
。