python3.9 安装 pyspider

news2024/9/21 16:25:42

安装pyspider   

 pip  install pyspider

直接报错
Please specify --curl-dir=/path/to/built/libcurl  

于是从PythonLibs官网 中获取依赖并自行下载到本地 

下载与3.9对应的

执行安装

pip install D:\下载\ad3-2.2.1-cp39-cp39-win32.whl

安装成功之后 执行 pip install pyspider ,提示安装成功,运行 pyspider 报错。

Traceback (most recent call last):
  File "D:\Python39\lib\runpy.py", line 197, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "D:\Python39\lib\runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "D:\Python39\Scripts\pyspider.exe\__main__.py", line 4, in <module>
  File "D:\Python39\lib\site-packages\pyspider\run.py", line 231
    async=True, get_object=False, no_input=False):
    ^
SyntaxError: invalid syntax

打开run.py  把async 替换成async1

继续执行pyspider ,还是报错

aceback (most recent call last):
  File "D:\Python39\lib\threading.py", line 980, in _bootstrap_inner
    self.run()
  File "D:\Python39\lib\threading.py", line 917, in run
    self._target(*self._args, **self._kwargs)
  File "D:\Python39\lib\site-packages\click\core.py", line 760, in invoke
    return __callback(*args, **kwargs)
  File "D:\Python39\lib\site-packages\click\decorators.py", line 26, in new_func
    return f(get_current_context(), *args, **kwargs)
  File "D:\Python39\lib\site-packages\pyspider\run.py", line 236, in fetcher
    Fetcher = load_cls(None, None, fetcher_cls)
  File "D:\Python39\lib\site-packages\pyspider\run.py", line 48, in load_cls
    return utils.load_object(value)
  File "D:\Python39\lib\site-packages\pyspider\libs\utils.py", line 369, in load_object
    module = __import__(module_name, globals(), locals(), [object_name])
  File "D:\Python39\lib\site-packages\pyspider\fetcher\__init__.py", line 1, in <module>
    from .tornado_fetcher import Fetcher
  File "D:\Python39\lib\site-packages\pyspider\fetcher\tornado_fetcher.py", line 81
    def __init__(self, inqueue, outqueue, poolsize=100, proxy=None, async=True):

打开  tornado_fetcher.py   把async 替换成async1 ,在执行pyspider,成功了,不再报错如下:

遇到如下错误:


  File "\python39\lib\site-packages
\wsgidav\wsgidav_app.py", line 135, in __init__
    _check_config(config)
  File "python39\lib\site-packages
\wsgidav\wsgidav_app.py", line 119, in _check_config
    raise ValueError("Invalid configuration:\n  - " + "\n  - ".join(errors))
ValueError: Invalid configuration:
  - Deprecated option 'domaincontroller': use 'http_authenticator.domain_control

 解决方案:

找到 文件 找到domaincontroller,这一行按照提示修改,但是依然报错,我就直接删除了,删除之后启动就报如下错误。

TypeError: Can't instantiate abstract class ScriptProvider with abstract methods get_resource_inst

我看到有的帖子说是wsgidav 版本太高,是的就是版本高了,高版本中的方法变了,于是乎复制  getResourceInst  改名为get_resource_inst 增加一下实现

 

 于是重新执行 pyspider all 报错如下:

  File "D:\Python39\lib\runpy.py", line 197, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "D:\Python39\lib\runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "D:\Python39\Scripts\pyspider.exe\__main__.py", line 7, in <module>
  File "D:\Python39\lib\site-packages\pyspider\run.py", line 754, in main
    cli()
  File "D:\Python39\lib\site-packages\click\core.py", line 1130, in __call__
    return self.main(*args, **kwargs)
  File "D:\Python39\lib\site-packages\click\core.py", line 1055, in main
    rv = self.invoke(ctx)
  File "D:\Python39\lib\site-packages\click\core.py", line 1657, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "D:\Python39\lib\site-packages\click\core.py", line 1404, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "D:\Python39\lib\site-packages\click\core.py", line 760, in invoke
    return __callback(*args, **kwargs)
  File "D:\Python39\lib\site-packages\click\decorators.py", line 26, in new_func
    return f(get_current_context(), *args, **kwargs)
  File "D:\Python39\lib\site-packages\pyspider\run.py", line 497, in all
    ctx.invoke(webui, **webui_config)
  File "D:\Python39\lib\site-packages\click\core.py", line 760, in invoke
    return __callback(*args, **kwargs)
  File "D:\Python39\lib\site-packages\click\decorators.py", line 26, in new_func
    return f(get_current_context(), *args, **kwargs)
  File "D:\Python39\lib\site-packages\pyspider\run.py", line 384, in webui
    app.run(host=host, port=port)
  File "D:\Python39\lib\site-packages\pyspider\webui\app.py", line 64, in run
    from werkzeug.dispatcher import DispatcherMiddleware
ModuleNotFoundError: No module named 'werkzeug.dispatcher'

依然是安装了新版本之后依赖包找不到了,于是找到 site-packages\werkzeug 安装目录发现werkzeug\middleware 下有个dispatcher.py 中有想要的类,于是就把webui 的引用包改了一下

 

 

        if dav_app:
            from werkzeug.middleware.dispatcher import DispatcherMiddleware
            application = DispatcherMiddleware(application, {
                '/dav': dav_app
            })

        container = tornado.wsgi.WSGIContainer(application)

于是乎就愉快的跑起来了。

 经历两天奋战终于搞定了。

本次安装思路就是:安装新版本,遇到依赖报错就去找新版本的包中类库所在的路径,修改对应的依赖文件中的依赖。但是安装之后修改过的痕迹被覆盖的话就得重新搞了。这个安装方式适合有一定的开发经验的朋友。

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/674028.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

1748_Perl中使用通配符处理文件

全部学习汇总&#xff1a; GreyZhang/perl_basic: some perl basic learning notes. (github.com) 使用通配符处理文件一般是用于文件的拷贝、删除以及对文件逐个分析等功能。在Perl中遇到的相应的功能基本上也是如此。通配符匹配处理文件&#xff08;文件名&#xff09;需要使…

前端JavaScript入门-day01

(创作不易&#xff0c;感谢有你&#xff0c;你的支持&#xff0c;就是我前行的最大动力&#xff0c;如果看完对你有帮助&#xff0c;请留下您的足迹&#xff09; 目录 JavaScript 介绍 1 JavaScript 是什么 1. JavaScript &#xff08;是什么&#xff1f;&#xff09; 2. 作…

H. Don‘t Blame Me(DP)

Problem - 1829H - Codeforces 很遗憾&#xff0c;这道题目的出题人没有想到一个有趣的故事&#xff0c;所以他只是让你解决以下问题。 给定由n个正整数组成的数组a&#xff0c;计算具有子序列中元素的按位AND在其二进制表示中恰好有k个设置位的非空子序列的数量。答案可能很大…

Winwebmail搭建邮件服务器

配置环境 角色系统IP地址DNS邮件服务器WindowServer2016192.168.1.1/24192.168.1.1客户端1Window10192.168.1.10/24192.168.1.1客户端2Window10192.168.1.20/24192.168.1.1 Winwebmail介绍 WinWebMail是安全高速的全功能邮件服务器&#xff0c;融合强大的功能与轻松的管理为…

macOS Ventura 13.4.1 (22F82|22F2083) 正式版发布,ISO、IPSW、PKG 下载

macOS Ventura 13.4.1 (22F82|22F2083) 正式版发布&#xff0c;ISO、IPSW、PKG 下载 本站下载的 macOS Ventura 软件包&#xff0c;既可以拖拽到 Applications&#xff08;应用程序&#xff09;下直接安装&#xff0c;也可以制作启动 U 盘安装&#xff0c;或者在虚拟机中启动安…

C++ 指针常量与常量指针

指针常量与常量指针的翻译就好比机器学习中Regularization翻译成正则化一样&#xff0c;讲真&#xff0c;正则化这个说法确实要比规则化显得高端些&#xff0c;但是到了理解的时候&#xff0c;还是要按照规则化理解。 指针常量与常量指针这个概念是一样的&#xff0c;英文里没…

【STM32】软件I2C(支持多字节)

I2C简介 I2C总线是一种串行、半双工的总线&#xff0c;主要用于近距离、低速的芯片之间的通信。I2C总线有两根双向的信号线&#xff0c;一根数据线SDA用于收发数据&#xff0c;一根时钟线SCL用于通信双方时钟的同步。 在一个i2c通讯总线中&#xff0c;可连接多个i2c通讯设备&a…

Linux国产操作系统,UCA-系统工程师学习必备技能,系统状态查询和进程管理,uname命令last命令 top命令和 ps命令 kill命令

目录 ​编辑 1.系统状态查询 1. 1.uname命令 1.2. last命令 1.3. top命令 2.进程管理 2.1. ps命令 2.2. kill命令 1.系统状态查询 1. 1.uname命令 rootuos~#: uname rootuos~#: uname -r 4.19是内核&#xff0c;0-6-amd64是架构。 rootuos~#: uname -a eagle操作系统的…

【深入浅出 Spring Security(十一)】授权原理分析和持久化URL权限管理

授权原理分析和持久化URL权限管理 一、必须知道的三大组件&#xff08;Overview&#xff09;二、FilterSecurityInterceptor 源码分析SecurityMetadataSource 分析 三、自定义 FilterSecurityMetadataSource 对象&#xff08;实战&#xff09;自定义表CustomSecurityMetadataSo…

【C++】构造函数调用规则

欢迎来到博主 Apeiron 的博客&#xff0c;祝您旅程愉快 &#xff01;时止则止&#xff0c;时行则行。动静不失其时&#xff0c;其道光明。 1、缘起 &#xff08;1&#xff09;默认情况下&#xff0c;C 编译器至少给一个类添加 3 个函数 ① 默认构造函数&#xff08;无参&#…

多无人车自动编队

matlab2016b可运行 Kaveh Fathian - Distributed Formation Control of Cars with Collision Avoidance (google.com)

极致呈现系列之:Echarts桑基图的流动旋律

目录 什么是桑基图桑基图的特点及应用场景Echarts中桑基图的常用属性Vue3中创建桑基图美化桑基图 在各种复杂系统中&#xff0c;我们经常需要了解不同流量之间的关系和流动情况。这种信息的可视化呈现对于我们理解系统的结构和转移过程至关重要。桑基图作为一种强大的可视化工具…

Lambda and Collections

我们先从最熟悉的Java集合框架(Java Collections Framework, JCF)开始说起。 为引入Lambda表达式&#xff0c;Java8新增了java.util.funcion包&#xff0c;里面包含常用的函数接口&#xff0c;这是Lambda表达式的基础&#xff0c;Java集合框架也新增部分接口&#xff0c;以便与…

tf卡打不开怎么办?tf卡数据丢失怎么恢复

TF卡打不开怎么办&#xff1f;当TF卡中的数据丢失后&#xff0c;又如何恢复呢&#xff1f;下面小编已为您梳理和归纳了答案&#xff01;请继续阅读下文。 一、TF卡打不开怎么办&#xff1f; 首先&#xff0c;我们需要了解导致TF卡读不出来的具体原因&#xff0c;这可能包括没…

ch8_4中断系统

为什么需要中断&#xff1f; 输入&#xff0c;输出。 计算机程序调试&#xff1b;发生异常事件&#xff1b; 都需要由中断系统进行处理. 引发中断的各种因素包括&#xff1a;人为设置中断&#xff0c;程序性事故&#xff0c; 硬件故障&#xff0c;I/O设备&#xff0c;外部事件等…

英伟达驱动安装

https://zhuanlan.zhihu.com/p/60307377 https://www.nvidia.cn/Download/index.aspx?langcn

路由器的工作原理详解

什么叫路由&#xff1f; 路由器的英文是 Router&#xff0c;也就是「找路的工具」。找什么路&#xff1f;寻找各个网络节点之间的路。 换句话说&#xff0c;路由器就像是快递中转站&#xff0c;包裹会经过一个个的中转站&#xff0c;从遥远的地方寄到你家附近&#xff0c;数据…

驱动开发:内核远程线程实现DLL注入

在笔者上一篇文章《驱动开发&#xff1a;内核RIP劫持实现DLL注入》介绍了通过劫持RIP指针控制程序执行流实现插入DLL的目的&#xff0c;本章将继续探索全新的注入方式&#xff0c;通过NtCreateThreadEx这个内核函数实现注入DLL的目的&#xff0c;需要注意的是该函数在微软系统中…

Java多线程阻塞队列(BlockingDeque)的简析

目录 一.什么是阻塞队列(BlockingDeque) 二.阻塞队列有什么用? 三.运用阻塞队列来实现一个最简单的生产者消费者 四.模拟实现阻塞队列 一.什么是阻塞队列(BlockingDeque) 既然叫做阻塞队列,那么他就满足两个特性 1.队列:先进先出 2.阻塞:空了不让出,满了不让进 &#…

kali常用ping命令探测

ping 判断目标主机网络是否畅通 ping $ip -c 1其中&#xff0c;-c 1 表示发送一个数据包 traceroute 跟踪路由 traceroute $domain ARPING 探测局域网IP ARP&#xff08;地址解析协议&#xff09;&#xff0c;将IP地址转换成MAC地址arping $ip -c 1 #!/bin/ bash######…