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

posted @ 2021-07-13 17:00  G0mini  阅读(564)  评论(0编辑  收藏  举报