python3.9 安装 pyspider

2023-11-20

安装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)

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

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

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

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python3.9 安装 pyspider 的相关文章

随机推荐

  • vue 项目中使用高德地图

    官方文档 高德地图API官网 高德地图2 0参考手册 高德地图JS API 2 0 示例 在项目中使用 vue amap 高德地图JSAPI在Vue框架下使用 高德地图在线 JS API 示例 一 账号准备 首先 需要注册并登录高德地图开放
  • uni-app 之 表格设置

    uni app 之 表格设置 image png
  • QT connect()连接函数

    函数重载 连接函数后多种重载方法 常用的有 函数4个参数 发射信号的对象 发射的信号 接受信号的对象 要执行的槽 按键单击信号连接到按键槽函数 方法1 connect ui gt pushButton SIGNAL clicked bool
  • java与C++之间的区别

    前言 研究生期间主要使用的是C 语言 因工作的要求 现在需要学习java语言 在学习的这段时间里 发现两种语言之间有着很多相似的地方 但又有一些区别 下面说一下java和c 中比较显著的区别 适用于有c 基础的读者 一 在数据类型 关键字方
  • 销售人员的月工资数量(月工资=基本工资+提成,提成=商品数*1.5)

    include
  • mfc窗口创建的create与oncreate

    在view类中 create 是虚函数由框架调用 是用来 生成一个窗口的子窗口 oncreate 消息响应函数 是用来 表示一个窗口正在生成 某个CWnd的Create函数由当前CWnd的Owner调用 而在CWnd Create中 又会调
  • JDBC乱码解决方法

    JDBC操作数据库出现中文乱码解决方案 学习JDBC的时候 我不止一次碰到过数据库中文乱码问题 解决方法其实很简单 在配置文件的url中加入如下语句就ok了 useUnicode true characterEncoding utf8 出现
  • MySQL幻读:大家好,我是幻读,我今天又被解决了

    什么是幻读 幻读的定义我这里还得补充一句 幻读仅专指 新插入的行 中途通过 update 更新数据而出现同一个事务前后两次查询的 结果集合 不一样 这种不算幻读 然后前几天有位读者跟我说 这个幻读例子不是已经被 可重复读 隔离级别解决了吗
  • localStorage和sessionStorage和Cookie的区别

    localStorage和sessionStorage和Cookie是前端开发中三种常见的临时存储客户端会话信息或者数据的方法 它们都存储在客户端中 区别 一 三者存储的有效时期不同 1 Cookie存储的有效时期可以设置 一般在浏览器关闭
  • 实战wxPython:042 - 高级控件之选项卡Notebook

    在wxPython中 book控件允许用户在各种面板之间切换 最常见的例子是带有选项卡界面的浏览器和系统选项对话框 选项卡wx Notebook提供了一个选项卡栏和一个 页面区域 该页面区域用于显示与每个选项卡相关的页面 默认情况下 选项卡
  • Anaconda下载速度慢,用清华镜像

    Anaconda在官网下载速度慢 关键是下载到一半就没了 清华镜像相对还是要好一点 以下网址持续更新 https mirrors tuna tsinghua edu cn anaconda archive
  • 获取openwrt wan口ip方法

    2020年7月30日14点39分 更新 之前写的方法 获取的是wan口的ip和网关 使用过程发现 以有线上网模式为例 获取wan口网关时 若网关中出现连续的1 1 会获取失败 表明该正则表达式是有问题的 即下面这个grep oE 之后的内容
  • linux c/c++ 面试题目整理(一)

    1 求下面函数的返回值 int func x int countx 0 while x countx x x x 1 return countx 问 假定x是9999 那么返回多少 答 返回的是8 解题思路是将x转化为二进制 看含有多少个1
  • 7-7 12-24小时制 (15分)

    7 7 12 24小时制 15分 编写一个程序 要求用户输入24小时制的时间 然后显示12小时制的时间 输入格式 输入在一行中给出带有中间的 符号 半角的冒号 的24小时制的时间 如12 34表示12点34分 当小时或分钟数小于10时 均没
  • Springboot项目中注入bean失败的问题排查

    这是一个Spring常见的问题 下面我们从测试方法和普通方法出问题两个角度来下如何解决 测试方法 先查看目录是否有误 测试类的包名一定要和启动类的包名一致 这里盗用一张图 为了避免这个错误我的测试方法大多都是Alt insert自动生成大体
  • 【工具使用】STM32CubeMX-基础定时器配置

    一 概述 无论是新手还是大佬 基于STM32单片机的开发 使用STM32CubeMX都是可以极大提升开发效率的 并且其界面化的开发 也大大降低了新手对STM32单片机的开发门槛 本文主要讲述STM32芯片的定时器的配置及其相关知识 二 软件
  • 域服务器同步用户所有文件,ad域服务器同步客户端文件

    ad域服务器同步客户端文件 内容精选 换一换 当服务器A和服务器B同时挂载同一文件系统C时 在服务器A上传文件 服务器B同步此文件时存在延时 而单独上传至服务器B则没有延时 需要在两个服务器的挂载参数中增加参数noac noac表示禁止缓存
  • gitlab 的介绍与安装

    系统 CentOS7 5X64 下载gitlab 最新版 https packages gitlab com gitlab gitlab ce 3 2 安装环境初始化 yum install curl policycoreutils ope
  • python---js逆向-----为了理想爬到想要的数据,我们怎能放过它

    目录 这是我的gitee仓库 https gitee com qin laoda python exercises 有兴趣的小可爱们可以点进去看看 下面我们来按照爬虫思路找一下我们要爬的网页 并获取数据 下面我以https ggzyfw f
  • python3.9 安装 pyspider

    安装pyspider pip install pyspider 直接报错 Please specify curl dir path to built libcurl 于是从PythonLibs官网 中获取依赖并自行下载到本地 下载与3 9对