Anaconda升级Scrapy到2.5.1报错:SettingsFrame无ENABLE_CONNECT_PROTOCOL属性
报错原因
这个报错由h2和hyperframe两个依赖包的版本不兼容导致:
Scrapy 2.5.1依赖的h2 3.x版本仅支持hyperframe 5.x版本,当你的Anaconda环境中hyperframe版本升级到6.x及以上时,SettingsFrame类里的ENABLE_CONNECT_PROTOCOL常量被移除,就会触发该属性缺失错误。你之前执行conda install -c conda-forge h2没有效果,是因为conda不会主动降级已经安装的高版本hyperframe包。
修复步骤
- 第一步:先卸载当前环境中的高版本hyperframe
执行命令:
如果你是通过conda安装的hyperframe,可执行:pip uninstall hyperframe -yconda remove hyperframe -y - 第二步:安装适配h2 3.x版本的hyperframe 5.2.0版本
执行命令:
如需使用conda安装,执行:pip install hyperframe==5.2.0conda install -c conda-forge hyperframe==5.2.0 -y - 第三步:验证修复结果
执行scrapy version命令,正常输出Scrapy 2.5.1版本号即代表问题解决。
备选方案
如果上述操作后问题仍存在,可直接重装匹配版本的h2包,会自动安装对应版本的hyperframe依赖:
pip install h2==3.2.0
内容的提问来源于stack exchange,提问作者Weijie Juay
相关产品推荐
相关产品推荐

