运行环境:win10 64位,python 3.7
在安装好pyspider后,运行pyspider all之后出现如下错误:
Traceback (most recent call last):
SyntaxError: invalid syntax
在研究了一个上午之后,集众多网友智慧,这个错误的原因是:
python3.7不兼容pyspider问题(出现占用关键字的问题)
Python 3.5中引入了async和await,它们在Python 3.7中成为关键字。所以需要替换一下关键字。
在C:\Users\Administrator\AppData\Local\Programs\Python\Python37\Lib\site-packages\pyspider目录下run.py、fetcher>tornado_fetcher.py、webui>app.py,用pycharm软件打开这几个文件:
将每一个async替换换成async1。千万不要用ctrl+F替换,因为会使from…
import 里的SimpleAsyncHTTPClient和CurlAsyncHTTPClient也被修改。
但是,接下来当我运行pyspider all 的时候又出现了如下错误:
ValueError: Invalid configuration:Deprecated option ‘domaincontroller’: use ‘http_authenticator.domain_controller’ instead.
解决方法这是WsgiDAV发布了版本 pre-release 3.x导致的,所以只要把版本降下来就好了。
将wsgidav替换为2.4.1,在命令行下运行 pip install wsgidav==2.4.1
安装好后运行pyspider all,完美解决,若是出现下面的问题:
ImportError: cannot import name ‘DispatcherMiddleware’ from ‘werkzeug.wsgi’ (c:\program files (x86)\python37-32\lib\site-packages\werkzeug\wsgi.py)
原因:
1、没有安装werkzeug
2、werkzeug的版本为1.0.0,这个版本中没有DispatcherMiddleware方法
解决办法:
卸载werkzeug,重新安装低版本的werkzeug
卸载命令:python -m pip uninstall werkzeug
安装指定版本:python -m pip install werkzeug==0.16.0
最后来运行pyspider all,成功启动pyspider