You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python 3.9/3.10环境下TCLab设备连接故障求助

问题描述

系统环境

  • OS: macOS 11.7.1 (Big Sur)

故障详情

数月前购买的TCLab套件此前测试正常,近期使用APMonitor课程脚本时出现故障。原使用Python 3.9,后安装Python 3.10,运行测试脚本show_T1.py时:

  1. Python 3.10中出现ImportError:无法从collections导入Iterable,原因是该类已移至collections.abc,修改脚本后导入问题解决,但出现新错误:AttributeError: module 'serial' has no attribute 'Serial',最终导致连接失败;
  2. 切换回Python 3.9无导入问题,但同样出现上述serial模块错误及连接失败;
    拔掉USB线缆时系统能正确提示无Arduino设备,说明硬件连接正常。

已安装模块列表

Python 3.10:

$ pip list
Package            Version
------------------ ---------
blessed            1.19.1
bpython            0.23
certifi            2022.9.24
charset-normalizer 2.1.1
contourpy          1.0.6
curtsies           0.4.1
cwcwidth           0.1.8
cycler             0.11.0
fonttools          4.38.0
future             0.18.2
greenlet           2.0.1
idna               3.4
iso8601            1.1.0
kiwisolver         1.4.4
matplotlib         3.6.2
numpy              1.23.5
packaging          21.3
Pillow             9.3.0
pip                22.3.1
Pygments           2.13.0
pyparsing          3.0.9
pyserial           3.5
python-dateutil    2.8.2
pyxdg              0.28
PyYAML             6.0
requests           2.28.1
scipy              1.9.3
serial             0.0.97
setuptools         65.4.1
six                1.16.0
tclab              0.4.9
urllib3            1.26.13
wcwidth            0.2.5

Python 3.9:

$ pip list
Package            Version
------------------ ---------
blessed            1.19.1
bpython            0.23
certifi            2022.9.24
charset-normalizer 2.1.1
contourpy          1.0.6
curtsies           0.4.1
cwcwidth           0.1.8
cycler             0.11.0
docopt             0.6.2
fonttools          4.38.0
future             0.18.2
greenlet           2.0.1
idna               3.4
iso8601            1.1.0
kiwisolver         1.4.4
matplotlib         3.6.2
numpy              1.23.5
packaging          21.3
Pillow             9.3.0
pip                22.3.1
pipreqs            0.4.11
Pygments           2.13.0
pyparsing          3.0.9
pyserial           3.5
python-dateutil    2.8.2
pyxdg              0.28
PyYAML             6.0
requests           2.28.1
scipy              1.9.3
serial             0.0.97
setuptools         65.4.1
six                1.16.0
tclab              0.4.9
urllib3            1.26.13
wcwidth            0.2.5
yarg               0.1.9
解决方案

1. 解决serial与pyserial模块冲突

从模块列表可看到,你同时安装了serial(0.0.97)和pyserial(3.5)。serial是废弃包,会覆盖pyserial的导入路径——真正提供Serial类的是pyserial,serial包无该属性,这是报错的核心原因。

操作步骤:

  • 卸载无用的serial包:
    • Python 3.10:
      python3.10 -m pip uninstall serial -y
      
    • Python 3.9:
      python3.9 -m pip uninstall serial -y
      
  • 重新安装pyserial确保正常:
    # 替换x为对应版本号(9或10)
    python3.x -m pip install --force-reinstall pyserial==3.5
    

2. Python 3.10的Iterable兼容处理

若后续其他脚本出现相同导入问题,可修改导入代码以兼容多版本:

  • 原代码:
    from collections import Iterable
    
  • 修改为:
    try:
        from collections.abc import Iterable
    except ImportError:
        from collections import Iterable
    

3. 后续验证

完成上述操作后,重新运行show_T1.py。若仍有问题,可尝试:

  • 重启电脑和TCLab设备;
  • 更换USB线缆或端口测试;
  • 确认TCLab的Arduino固件为最新版本。

内容的提问来源于stack exchange,提问作者MERM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 16:05:33