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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .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 中如何实现缓存的预热?