python3.10版本安装lamda8.44之后,执行python报错:
(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'
这个错误涉及两个问题:
方法 1:使用替代库(推荐)
pip uninstall pyreadline
pip install pyreadline3 # 兼容 Python 3.11 的 fork 版本
方法 2:降级 Python pyreadline 2.1 仅支持 Python ≤3.9,最佳方案是降级:
conda create -n py39 python=3.9 # 使用 conda
conda activate py39
pip install lamda==8.44
方法 3:手动修复 pyreadline(临时方案) 修改 pyreadline 源码:
# 找到 pyreadline 安装路径
python -c "import pyreadline; print(pyreadline.__file__)"
打开 pyreadline/lineeditor.py,将:
from collections import Callable
改为:
from collections.abc import Callable
方法 4:升级 lamda 联系库作者更新依赖,或尝试最新版:
pip install --upgrade lamda # 检查是否有新版本
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。