运行Flask应用时遇ModuleNotFoundError: No module named 'gevent.wsgi'问题求助
解决
ModuleNotFoundError: No module named 'gevent.wsgi' 问题 这个报错我之前也踩过坑,根源就是gevent版本更新导致的模块路径变更——在gevent 21.0.0及以后的版本中,原来的gevent.wsgi模块被迁移到gevent.pywsgi下了,而你代码依赖的rasa_core(或者底层调用逻辑)还在使用旧的导入路径,所以才会触发这个找不到模块的错误。
结合你的Anaconda虚拟环境、Python3.6的环境情况,给你几个可行的解决办法:
1. 直接修正导入路径(若代码中有显式导入)
如果是你自己的代码里直接写了from gevent.wsgi import WSGIServer,把它改成:
from gevent.pywsgi import WSGIServer
2. 降级gevent到兼容旧路径的版本
看你贴的代码里没有显式导入wsgi模块,应该是rasa_core底层调用了旧路径。这种情况下,你可以把gevent降级到20.9.0版本(这个版本还保留gevent.wsgi模块),先激活你的Anaconda虚拟环境,再执行:
pip install gevent==20.9.0
3. 更新rasa_core到适配新版gevent的版本
如果不想降级依赖,可以尝试更新rasa_core到修复了这个导入问题的版本,执行:
pip install --upgrade rasa-core
额外验证小步骤
- 先确认当前环境的gevent版本:激活虚拟环境后执行
pip show gevent,查看Version字段是否为21.0.0及以上 - 确保安装依赖和运行代码用的是同一个环境:用
conda info --envs查看当前激活的环境,再用pip list核对该环境下的依赖版本
你说另一台机器能正常运行,大概率是那台机器的gevent版本偏旧,或者rasa_core已经更新适配了新gevent,你可以对比两台机器的依赖版本来确认~
内容的提问来源于stack exchange,提问作者Praveen R
相关产品推荐
相关产品推荐

