创建ArduinoMega对象后pyFirmata抛出AttributeError错误求助
Arduino Mega与pyFirmata连接报错排查
问题背景
我正在启动一个Arduino项目,但每次运行代码都会报错,怀疑是配置环节出了问题。已经把Standard Firmata Sketch上传到Arduino Mega,也安装了pyFirmata,找不到哪里操作失误。另外在另一台电脑上尝试过,虽然没正常工作,但能完成板卡初始化,不会出现这类报错。
测试代码
import pyfirmata as pf board = pf.ArduinoMega('COM5')
报错信息
Traceback (most recent call last): File "C:\Users\stiky\Desktop\Code\Python Codes\Arduino\test.py", line 3, in <module> board = pf.ArduinoMega('COM5') ^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\stiky\AppData\Local\Programs\Python\Python311\Lib\site-packages\pyfirmata\__init__.py", line 32, in __init__ super(ArduinoMega, self).__init__(*args, **kwargs) File "C:\Users\stiky\AppData\Local\Programs\Python\Python311\Lib\site-packages\pyfirmata\pyfirmata.py", line 101, in __init__ self.setup_layout(layout) File "C:\Users\stiky\AppData\Local\Programs\Python\Python311\Lib\site-packages\pyfirmata\pyfirmata.py", line 157, in setup_layout self._set_default_handlers() File "C:\Users\stiky\AppData\Local\Programs\Python\Python311\Lib\site-packages\pyfirmata\pyfirmata.py", line 161, in _set_default_handlers self.add_cmd_handler(ANALOG_MESSAGE, self._handle_analog_message) File "C:\Users\stiky\AppData\Local\Programs\Python\Python311\Lib\site-packages\pyfirmata\pyfirmata.py", line 185, in add_cmd_handler len_args = len(inspect.getargspec(func)[0]) ^^^^^^^^^^^^^^^^^^ AttributeError: module 'inspect' has no attribute 'getargspec'. Did you mean: 'getargs'?
解决方案
这个报错的核心原因是Python版本与pyFirmata版本不兼容:
- 你使用的Python 3.11已经移除了
inspect.getargspec()方法(该方法在Python 3.0起就被标记为废弃,3.11彻底移除)。 - 你安装的pyFirmata版本较旧,仍在调用这个已被移除的API;另一台电脑能完成初始化,是因为它的Python版本低于3.11,
getargspec方法尚未被完全移除。
具体修复步骤
- 升级pyFirmata到兼容版本:打开命令提示符执行以下命令,新版库已替换为兼容的
inspect.getfullargspec()方法:pip install --upgrade pyfirmata - 若升级后仍有问题,可降级Python版本至3.10或更低,确保与pyFirmata版本匹配。
- 额外验证:确认Arduino Mega的COM端口正确(可在Arduino IDE的「工具」→「端口」中查看),重新上传Standard Firmata Sketch后再测试代码。
内容的提问来源于stack exchange,提问作者Sumito
相关产品推荐
相关产品推荐

