运行Ryu控制器遇问题:TimeoutError及eventlet导入错误求助
解决Ryu控制器运行的依赖兼容问题
问题背景
运行ryu-manager时先后触发两个错误:
TypeError: cannot set 'is_timeout' attribute of immutable type 'TimeoutError'- 安装
eventlet==0.33.1后出现ImportError: cannot import name ALREADY_HANDLED from eventlet.wsgi
核心原因
- 第一个错误:高版本eventlet将
TimeoutError改为不可变类型,与Ryu旧逻辑冲突 - 第二个错误:eventlet 0.30.x及以后版本移除了
ALREADY_HANDLED变量,0.33.1不在兼容范围内
可行解决方案
安装兼容的eventlet版本
选择eventlet 0.29.0,该版本同时满足保留ALREADY_HANDLED、不触发TimeoutError属性问题的要求,执行命令:pip uninstall eventlet -y pip install eventlet==0.29.0重置Ryu依赖
卸载现有Ryu并重新安装,确保依赖完全匹配:pip uninstall ryu -y pip install ryu --no-cache-dir完成后重新运行
ryu-manager即可正常启动。可选:用虚拟环境隔离依赖
若系统存在其他依赖冲突,建议创建独立虚拟环境:python -m venv ryu-env source ryu-env/bin/activate # Linux/macOS环境 # Windows环境执行:ryu-env\Scripts\activate pip install eventlet==0.29.0 ryu
内容的提问来源于stack exchange,提问作者Asraa A
相关产品推荐
相关产品推荐

