首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pyFirmata给出错误:模块“检查”没有属性“getargspec”

pyFirmata给出错误:模块“检查”没有属性“getargspec”
EN

Stack Overflow用户
提问于 2022-11-26 21:14:13
回答 2查看 88关注 0票数 1

我正在尝试使用pyFirmata,但我无法让它工作。即使是最基本的库也不能工作。我想图书馆的代码有问题吧。

代码语言:javascript
复制
from pyfirmata import Arduino,util
import time

port = 'COM5'
board = Arduino(port)

我知道这个错误:

代码语言:javascript
复制
Traceback (most recent call last):
  File "c:\Users\Public\pythonpublic\arduino.py", line 5, in <module>
    board = Arduino(port)
            ^^^^^^^^^^^^^
  File "C:\Users\marce\AppData\Roaming\Python\Python311\site-packages\pyfirmata\__init__.py", line 19, in __init__      
    super(Arduino, self).__init__(*args, **kwargs)
  File "C:\Users\marce\AppData\Roaming\Python\Python311\site-packages\pyfirmata\pyfirmata.py", line 101, in __init__    
    self.setup_layout(layout)
  File "C:\Users\marce\AppData\Roaming\Python\Python311\site-packages\pyfirmata\pyfirmata.py", line 157, in setup_layout
    self._set_default_handlers()
  File "C:\Users\marce\AppData\Roaming\Python\Python311\site-packages\pyfirmata\pyfirmata.py", line 161, in _set_default_handlers
    self.add_cmd_handler(ANALOG_MESSAGE, self._handle_analog_message)
  File "C:\Users\marce\AppData\Roaming\Python\Python311\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'?
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-11-26 21:22:43

根据到pyFirmata文档的第一行

它运行在Python2.7、3.6和3.7上

您正在使用Python3.11。自Python3.7以来,inspect (核心库模块)已经发生了变化。

票数 0
EN

Stack Overflow用户

发布于 2022-11-26 22:38:36

正如在另一个答案中已经指出的,pyFirmata模块目前被记录为在Python2.7、3.6和3.7上运行。这并不意味着它不会在其他版本上工作,但是很可能它还没有被作者在其他版本上测试过,也没有得到官方的支持。因此,它可能在较新的Python版本上工作,也可能不起作用。

您的错误消息是由缺少函数inspect.getargspec()引起的。这个函数是的一部分,但是自从Python3.0(2008年发布)起就被废弃了。不幸的是,作者并没有意识到这一点,或者根本没有费心去修复它,所以现在该代码不再适用于最新版本的Python。

在Python文档中,您可以看到该函数在3.10版中仍然可用,但在3.11版中却不可用。

要解决这个问题,您有以下几种选择:

  • 降级到Python3.10,这仍然是一个很好的选择(Python3.10“活”到2026-10-04)。我不知道是否所有其他功能都能工作。我想会的,但你得自己找出答案。
  • 降级到Python3.7,这被声称是支持的。考虑到Python3.7也还活着(直到2023-06-27),这也是一个合理的选择。
  • 为pyFirmata模块创建一个问题,并希望作者能够解决这个问题。注意某个人在2019年已经制造了一个问题。,但显然没有效果。你可以在那里留下一条评论,确认这件事现在真的坏了。
  • 克隆这个库并自己修复它(并创建一个拉请求以将其放到官方库中)。
  • 找到另一个类似的库,它可以使用Python 3.11。
  • 自己写代码。

在3.7到3.10之间降级到Python版本肯定是最简单的选择,给作者留下一些反馈将给你一个机会,将来它会被修复,以防你计划更长时间使用你的脚本。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74585622

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档