随笔 - 172  文章 - 52  评论 - 6  阅读 - 17万

pyspider安装从失败到成功运行

File "c:\users\13733\appdata\local\programs\python\python37\lib\site-packages\pyspider\run.py", line 231

 
async=True, get_object=False, no_input=False):
    ^

参考:https://segmentfault.com/q/1010000015188569

 

Command "python setup.py egg_info" failed with error code 10 in C:\Users\cc\AppData\Local\Temp\pip-build-ietfuwf2\pycurl

参考:https://blog.csdn.net/shawroad88/article/details/82222811

 

ValueError: Invalid configuration:
- Deprecated option 'domaincontroller': use 'http_authenticator.domain_controller' instead.

参考:https://www.cnblogs.com/wisir/p/10587938.html

 

命令行pyspider,之后一直卡在result_worker starting...

参考:https://segmentfault.com/q/1010000007682102/a-1020000007769713(把防火墙关了,以及再开一个cmd,运行pyspider,再关掉原来那个cmd#实测替换完run.py、tornado_fetcher.py、app.py的async为shark,注意只替换单词为async的,async_father,Async不用替换,运行spider all 如果出错 安装pip install wsgidav==0.16.0。最后出现result_worker starting...,这个命令行不关闭,在管理员身份打开一个cmd,运行spider all ,实测成功运行。

 

 

d:\python35\lib\site-packages\pyspider\libs\utils.py:196: FutureWarning: timeout is not supported on your platform.
warnings.warn("timeout is not supported on your platform.", FutureWarning)

这个问题,可以忽略,不影响使用。

 

 

一、概述

本机已经安装好python3.7,现做测试,需要在开发机上安装pyspider,基于windows下的安装遇到一些坑,特此记录

二、安装步骤

pip install pyspider
此过程一般不会有问题,因为pip会自动安装依赖包,但能不能正常运行起来,它管不了那么多了哦~ 

三、开始填坑

1、执行 pyspider all,立马报错:

复制代码
Traceback (most recent call last):
File "D:\Program Files\python37\Scripts\pyspider-script.py", line 11, in <module>
load_entry_point('pyspider==0.3.10', 'console_scripts', 'pyspider')()
File "d:\program files\python37\lib\site-packages\pkg_resources\__init__.py", line 487, in load_entry_point
return get_distribution(dist).load_entry_point(group, name)
File "d:\program files\python37\lib\site-packages\pkg_resources\__init__.py", line 2728, in load_entry_point
return ep.load()
File "d:\program files\python37\lib\site-packages\pkg_resources\__init__.py", line 2346, in load
return self.resolve()
File "d:\program files\python37\lib\site-packages\pkg_resources\__init__.py", line 2352, in resolve
module = __import__(self.module_name, fromlist=['__name__'], level=0)
File "d:\program files\python37\lib\site-packages\pyspider\run.py", line 231
async=True, get_object=False, no_input=False):
^
SyntaxError: invalid syntax
复制代码

 


 这是因为python3.5开始把async和await设为关键字了,这里作为参数名与关键字冲突了,因此找到对应的py文件,将async修改为其他名称,我修改为asyn。在以下几个文件中存在:

pyspider->run.py、pyspider->fetcher->tornado_fetcher.py、webui>app.py。

2、再执行,再报错:

复制代码
File "d:\program files\python37\lib\site-packages\pyspider\webui\app.py", line 59, in run
from .webdav import dav_app
File "d:\program files\python37\lib\site-packages\pyspider\webui\webdav.py", line 216, in <module>
dav_app = WsgiDAVApp(config)
File "d:\program files\python37\lib\site-packages\wsgidav\wsgidav_app.py", line 134, in __init__
_check_config(config)
File "d:\program files\python37\lib\site-packages\wsgidav\wsgidav_app.py", line 118, in _check_config
raise ValueError("Invalid configuration:\n - " + "\n - ".join(errors))
ValueError: Invalid configuration:
- Deprecated option 'domaincontroller': use 'http_authenticator.domain_controller' instead.
复制代码

 


这个是因为wsgidav版本太高了,重新安装一下:

python -m pip uninstall wsgidav
python -m pip install wsgidav==2.4.1
 至此,有些小伙伴就应该可以正常启动pyspider了,我的环境还遇到以下错误:

3、再报错:

复制代码
File "d:\program files\python37\lib\site-packages\pyspider\run.py", line 497, in all
ctx.invoke(webui, **webui_config)
File "d:\program files\python37\lib\site-packages\click\core.py", line 555, in invoke
return callback(*args, **kwargs)
File "d:\program files\python37\lib\site-packages\click\decorators.py", line 17, in new_func
return f(get_current_context(), *args, **kwargs)
File "d:\program files\python37\lib\site-packages\pyspider\run.py", line 384, in webui
app.run(host=host, port=port)
File "d:\program files\python37\lib\site-packages\pyspider\webui\app.py", line 64, in run
from werkzeug.wsgi import DispatcherMiddleware
ImportError: cannot import name 'DispatcherMiddleware' from 'werkzeug.wsgi' (d:\program files\python37\lib\site-packages\werkzeug\wsgi.py)
复制代码

 


经过多次尝试,发现是 werkzeug版本高了,DispatcherMiddleware这个类已经不存在了,因此重新安装小版本:

python -m pip uninstall werkzeug
python -m pip install werkzeug=0.16
为什么是0.16版本?我是再卸载后,暂不安装,直接执行pyspider时,错误提示信息中显示了最低版本为0.16:)

4、正常运行,截图纪念

 

 

 

 


————————————————
版权声明:本文为CSDN博主「paulluo0739」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/paulluo0739/java/article/details/104255877

posted on   共感的艺术  阅读(2436)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示