具体有一下4类问题
- SyntaxError:invalid syntax
- AttributeError: module 'xxx' has no attribute '__version__'
- ValueError:Invalid configuration:Deprecated option ‘domaincontroller’ : use ‘domain_controller’ instead.
- 一直[I 200720 10:58:11 result_worker:49] result_worker starting...,不进行下一步
1.SyntaxError
第一个问题是因为python3.7不兼容pyspider的问题,pyspider中使用的async和await在python3.5之后成为关键字,所以需要替换。
替换的文件有:(这是我自己的文件目录,根据自己电脑目录不同去找)
- C:\Users\asus\AppData\Local\Programs\Python\Python37\Lib\site-packages\pyspider\run.py
- C:\Users\asus\AppData\Local\Programs\Python\Python37\Lib\site-packages\pyspider\webui\app.py
- C:\Users\asus\AppData\Local\Programs\Python\Python37\Lib\site-packages\pyspider\fetcher\tornado_fetcher.py
其中第一个和第二个文件可以使用全部替换一键完成,但是第三个文件需要一个一个替换,其中值替换async单独出现的字段,如果有任何字符和async组合出现都不替换。
然后重新打开cmd,输入pyspider all,如果报错文件中还出现async下面有尖角符号的,那么就是这个有问题的async所在的文件中没有完成相应的替换,重新检查。
2.AttributeError: module 'xxx' has no attribute '__version__'
重装xxx,
Pip3 uninstall xxx
Pip3 install xxx
- ValueError:Invalid
这是运行错误的报告(因为之后才写的bolg,所以搞忘截图了,本截图是在网上找的,但错误是一致的)
这是WsgiDAV发布了版本 pre-release 3.x导致的,所以只要把版本降下来就好了。
将wsgidav替换为2.4.1
•打开cmd,输入
#卸载原来的wsgidav文件
pip3 uninstall wsgidav
#安装新的wsgidav文件
pip3 install wsgidav==2.4.1 -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
我这里使用了阿里镜像,比从国外网站下载快很多。
重新打开cmd,如果输入pyspider all,运行成功,那么可以不用继续了
4.一直[I 200720 10:58:11 result_worker:49] result_worker starting...,不进行下一步
有两种情况,
一种是webui文件夹里的app.py的第64行from werkzeug.wsgi import DispatcherMiddleware,DispatcherMiddleware这个类并没有在wsgi.py文件中定义,而是被存放在werkzeug\middleware,有两种修改方式
- 修改from werkzeug.middleware import DispatcherMiddleware,
- 将werkzeug\middleware中的DispatcherMiddleware这个类,复制到wsgi.py的最后面。
另一种情况,是没有将防火墙关闭,解决办法就是直接将防火墙关闭
然后打开cmd,运行pyspider all。
运行成功截图,cmd控制台:
Chrome:
这里有个小问题,就是我在测试到底是不是开了防火墙的原因后,再重新pyspider时,运行不出来,但是等了10来分钟再运行时就运行成功了,具体什么原因还不知道,可能是系统自身原因。
以上就是我自己在安装pyspider的过程中遇到的问题,期间还是查找了很多博客,结合自身实际写了这篇博客,希望能帮到大家。