作者:妞妞盼寒假_197 | 来源:互联网 | 2024-12-16 18:36
输入命令:pyspiderall报错如下:原因:新版本Python引入了关键字async关键字(楼主使用的python版本是3.8),造成了python和pyspider关键字冲突
输入命令:pyspider all
报错如下:
原因:
新版本Python引入了关键字async关键字(楼主使用的python版本是3.8),造成了python和pyspider关键字冲突,所以在安装好pyspider库之后运行pyspider all 会报错。
解决方案:
1. 为了解决关键字冲突的问题,主要修改以下三个文件:
- \Lib\site-packages\pyspider\run.py
- \Lib\site-packages\pyspider\fetcher\tornado_fetcher.py
- \Lib\site-packages\pyspider\webui\app.py
注意:这里写的是相对路径,根据自己的python安装路径来找就可以了。
1. run.py和app.py下的async都是变量,可直接替换成其他非关键字,此处我替换为async_mode
2. tornado_fetcher.py中,建议不使用全部替换,手动更改:非变量不要修改:如CurlAsyncHTTPClient;变量如async=True修改为async_mode=True
2. 启动测试,又报错
报错如下:
又是版本的问题,这里直接降低wsgidav的版本
python -m pip install wsgidav==2.4.1
接着测试,接着报错:
wsgidav中1.0的新版本werkzeug没有DispatcherMiddleware,werkzeug的版本需要介于0.15-1.0之间。(pyspider需要0.15+的werkzeug版本)。
# 卸载werkzeug
python -m pip uninstall werkzeug
#安装0.16.1版本
python -m pip install werkzeug==0.16.1
好了,再一次测试,发现终于可以用了。
大功告成!
总结:
没事儿不要瞎玩,玩新版本就得踩坑。哎,我没事儿,溜达,有路我不走,就是要踩坑,就玩~