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

Ubuntu安装Ryu控制器报错:无法设置TimeoutError的is_timeout属性

Ryu控制器运行ryu-manager报错的解决方法

报错信息(中文翻译)

回溯(最近的调用最后):
  文件 "/home/jeo/.local/bin/ryu-manager", 第5行, 在<module>中
    from ryu.cmd.manager import main
  文件 "/home/jeo/.local/lib/python3.10/site-packages/ryu/cmd/manager.py", 第22行, 在<module>中
    from ryu.lib import hub
  文件 "/home/jeo/.local/lib/python3.10/site-packages/ryu/lib/hub.py", 第30行, 在<module>中
    import eventlet
  文件 "/home/jeo/.local/lib/python3.10/site-packages/eventlet/__init__.py", 第17行, 在<module>中
    from eventlet import convenience
  文件 "/home/jeo/.local/lib/python3.10/site-packages/eventlet/convenience.py", 第7行, 在<module>中
    from eventlet.green import socket
  文件 "/home/jeo/.local/lib/python3.10/site-packages/eventlet/green/socket.py", 第4行, 在<module>中
    __import__('eventlet.green._socket_nodns')
  文件 "/home/jeo/.local/lib/python3.10/site-packages/eventlet/green/_socket_nodns.py", 第11行, 在<module>中
    from eventlet import greenio
  文件 "/home/jeo/.local/lib/python3.10/site-packages/eventlet/greenio/__init__.py", 第3行, 在<module>中
    from eventlet.greenio.base import *  # noqa
  文件 "/home/jeo/.local/lib/python3.10/site-packages/eventlet/greenio/base.py", 第32行, 在<module>中
    socket_timeout = eventlet.timeout.wrap_is_timeout(socket.timeout)
  文件 "/home/jeo/.local/lib/python3.10/site-packages/eventlet/timeout.py", 第166行, 在wrap_is_timeout中
    base.is_timeout = property(lambda _: True)
类型错误:无法为不可变类型'TimeoutError'设置'is_timeout'属性

问题原因

Python 3.10版本中,socket.timeout被重命名为内置的TimeoutError,而TimeoutError是不可变类型。旧版本的eventlet库尝试给这个不可变类型添加自定义属性,触发了上述错误。

解决步骤

  • 卸载旧版eventlet,安装兼容Python 3.10的新版本(eventlet 0.33.0及以上修复了该问题):
pip uninstall eventlet -y
pip install eventlet>=0.33.0
  • 若问题仍存在,升级Ryu到最新兼容版本:
pip install --upgrade ryu
  • 验证:运行ryu-manager,检查是否正常启动。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 19:15:34