Python 3.9 安装pyspider
错误1
运行安装pip install pyspider 时会遇到报错“pycurl”
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-vXo1W3/pycurl
解决办法
这是PyCurl安装错误,此时需要安装PyCurl库。从[http://www.lfd.uci.edu/~gohlke/pythonlibs/#pycurl]()找到对应的Python版本,然后下载相应的wheel文件即可。
利用pip安装即可 pip3 install pycurl‑7.43.0.5‑cp39‑cp39‑win_amd64.whl
然后重新运行
pip install pyspider
错误2
拉倒最后一行,发现错误如下。
SyntaxError: invalid syntax
解决办法
async从 python3.7 开始已经加入保留关键字中
async不能作为函数的参数名,
需要把async替换为为async_mode。
需要修改的几个文件
E:\python3.9\Lib\site-packages\pyspider\run.py
E:\python3.9\Lib\site-packages\pyspider\webui\app.py
E:\python3.9\Lib\site-packages\pyspider\fetcher\tornado_fetcher.py
例:
E:\python3.9\Lib\site-packages\pyspider\run.py
231行
245行
365行
E:\python3.9\Lib\site-packages\pyspider\webui\app.py
95行
E:\python3.9\Lib\site-packages\pyspider\fetcher\tornado_fetcher.py
81行
89行
95行
117行
然后重新运行
pip install pyspider
错误3
AttributeError:mode 'fraction' has no attribute 'gcd'
解决办法
修改文件
E:\python3.9\Lib\site-packages\pyspider\libs\base_handler.py
1.文件头加入 import math
2.fractions.gcd()改为math.gcd(116行)
然后重新运行
pip install pyspider
错误4
ValueError: Invalid configuration: - Deprecated option 'domaincontroller': use 'http_authenticator
原因是因为WsgiDAV发布了版本 pre-release 3.x
解决办法
修改文件
E:\python3.9\Lib\site-packages\pyspider\webui\webdav.py (209行)
'domaincontroller': NeedAuthController(app),
修改为:
'http_authenticator':{
'HTTPAuthenticator':NeedAuthController(app),
},
然后重新运行
pip install pyspider
错误五
ImportError: cannot import name 'DispatcherMiddleware' from 'werkzeug.wsgi'
解决办法
werkzeug的版本为1.0.0以上,这个版本中没有DispatcherMiddleware方法,降低版本
pip3 uninstall Werkzeug
pip3 install Werkzeug==0.16.1
成功
执行pyspider all