安装pyspider过程中遇到的几个问题

具体有一下4类问题

  1. SyntaxError:invalid syntax
  2. AttributeError: module 'xxx' has no attribute '__version__'
  3. ValueError:Invalid configuration:Deprecated option ‘domaincontroller’ : use ‘domain_controller’ instead.
  4. 一直[I 200720 10:58:11 result_worker:49] result_worker starting...,不进行下一步

1.SyntaxError

第一个问题是因为python3.7不兼容pyspider的问题,pyspider中使用的async和await在python3.5之后成为关键字,所以需要替换。

替换的文件有:(这是我自己的文件目录,根据自己电脑目录不同去找)

  1. C:\Users\asus\AppData\Local\Programs\Python\Python37\Lib\site-packages\pyspider\run.py
  2. C:\Users\asus\AppData\Local\Programs\Python\Python37\Lib\site-packages\pyspider\webui\app.py
  3. 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

  1. 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,有两种修改方式

  1. 修改from werkzeug.middleware import DispatcherMiddleware,
  2. 将werkzeug\middleware中的DispatcherMiddleware这个类,复制到wsgi.py的最后面。

另一种情况,是没有将防火墙关闭,解决办法就是直接将防火墙关闭

然后打开cmd,运行pyspider all。

运行成功截图,cmd控制台:

 

Chrome:

 

这里有个小问题,就是我在测试到底是不是开了防火墙的原因后,再重新pyspider时,运行不出来,但是等了10来分钟再运行时就运行成功了,具体什么原因还不知道,可能是系统自身原因。

以上就是我自己在安装pyspider的过程中遇到的问题,期间还是查找了很多博客,结合自身实际写了这篇博客,希望能帮到大家。