[1329]python报错AttributeError: module ‘collections‘ has no attribute ‘Callable‘

python3.10版本安装lamda8.44之后,执行python报错:

arduino 复制代码
(py311) C:\Users\admin>python
Python 3.11.11 | packaged by Anaconda, Inc. | (main, Dec 11 2024, 16:34:19) [MSC v.1929 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
Failed calling sys.__interactivehook__
Traceback (most recent call last):
  File "C:\Users\admin\.conda\envs\py311\Lib\site-packages\readline.py", line 34, in <module>
    rl = Readline()
         ^^^^^^^^^^
  File "C:\Users\admin\.conda\envs\py311\Lib\site-packages\pyreadline\rlmain.py", line 422, in __init__
    BaseReadline.__init__(self)
  File "C:\Users\admin\.conda\envs\py311\Lib\site-packages\pyreadline\rlmain.py", line 62, in __init__
    mode.init_editing_mode(None)
  File "C:\Users\admin\.conda\envs\py311\Lib\site-packages\pyreadline\modes\emacs.py", line 633, in init_editing_mode
    self._bind_key('space',       self.self_insert)
  File "C:\Users\admin\.conda\envs\py311\Lib\site-packages\pyreadline\modes\basemode.py", line 162, in _bind_key
    if not callable(func):
           ^^^^^^^^^^^^^^
  File "C:\Users\admin\.conda\envs\py311\Lib\site-packages\pyreadline\py3k_compat.py", line 8, in callable
    return isinstance(x, collections.Callable)
                         ^^^^^^^^^^^^^^^^^^^^
AttributeError: module 'collections' has no attribute 'Callable'

原因

这个错误涉及两个问题:

  • lamda 8.44 依赖 pyreadline==2.1(已过时)
  • pyreadline 2.1 在 Python 3.11 不兼容,导致 collections.Callable 报错

解决方案(任选一种)

方法 1:使用替代库(推荐)

bash 复制代码
pip uninstall pyreadline
pip install pyreadline3  # 兼容 Python 3.11 的 fork 版本

方法 2:降级 Python pyreadline 2.1 仅支持 Python ≤3.9,最佳方案是降级:

ini 复制代码
conda create -n py39 python=3.9  # 使用 conda
conda activate py39
pip install lamda==8.44

方法 3:手动修复 pyreadline(临时方案) 修改 pyreadline 源码:

bash 复制代码
# 找到 pyreadline 安装路径
python -c "import pyreadline; print(pyreadline.__file__)"

打开 pyreadline/lineeditor.py,将:

python 复制代码
from collections import Callable

改为:

python 复制代码
from collections.abc import Callable

方法 4:升级 lamda 联系库作者更新依赖,或尝试最新版:

bash 复制代码
pip install --upgrade lamda  # 检查是否有新版本
相关推荐
鱼樱前端1 小时前
AI 会不会取代前端?我看了 2026 年 7 月整个市场,给你一个不吓人的答案
前端·程序员·ai编程
码流怪侠15 小时前
GitHub 2026年7月热门项目全景盘点:Agent Skills 生态炸裂,开源世界正在重写规则
程序员·github·agent
DogDaoDao20 小时前
【GitHub】WorldMonitor:一个工程极致主义的实时全球情报仪表盘深度解析
python·程序员·架构·github·go语言·worldmonitor·实时全球情报
zguigo21 小时前
RabbitMQ 从入门到实战:三天掌握消息队列核心与应用
程序员
字节逆旅1 天前
有哪些工作不可以交给AI
人工智能·程序员
咔咔学姐kk1 天前
大模型学习路线图:小白也能轻松入门,附全套学习资源,建议收藏!
人工智能·学习·ai·程序员·大模型·就业·大模型学习
程序员cxuan2 天前
Loop 还没玩明白,Graph Engineering 又火了。
人工智能·后端·程序员
谢文峰2 天前
Graph Engineering 是新范式,还是 AI 圈的又一个新词?
程序员
程序员海军2 天前
一个 AI 应用开发程序员的一天,都在屏幕前忙些什么?
前端·后端·程序员