• 运行scrapy程序时候遇到的问题 :ImportError: cannot import name opentype


    参考一篇大佬的博文:https://www.cnblogs.com/zlslch/p/8318942.html

    问题:将scrapy 1.8 程序在win本地运行成功,但是在linux运行报以下错误:

    2019-12-10 17:12:14 [twisted] CRITICAL:
    Traceback (most recent call last):
      File "/apps/software/anaconda2/lib/python2.7/site-packages/twisted/internet/defer.py", line 1418, in _inlineCallbacks
        result = g.send(result)
      File "/apps/software/anaconda2/lib/python2.7/site-packages/scrapy/crawler.py", line 104, in crawl
        six.reraise(*exc_info)
      File "/apps/software/anaconda2/lib/python2.7/site-packages/scrapy/crawler.py", line 86, in crawl
        self.engine = self._create_engine()
      File "/apps/software/anaconda2/lib/python2.7/site-packages/scrapy/crawler.py", line 111, in _create_engine
        return ExecutionEngine(self, lambda _: self.stop())
      File "/apps/software/anaconda2/lib/python2.7/site-packages/scrapy/core/engine.py", line 69, in __init__
        self.downloader = downloader_cls(crawler)
      File "/apps/software/anaconda2/lib/python2.7/site-packages/scrapy/core/downloader/__init__.py", line 86, in __init__
        self.middleware = DownloaderMiddlewareManager.from_crawler(crawler)
      File "/apps/software/anaconda2/lib/python2.7/site-packages/scrapy/middleware.py", line 53, in from_crawler
        return cls.from_settings(crawler.settings, crawler)
      File "/apps/software/anaconda2/lib/python2.7/site-packages/scrapy/middleware.py", line 34, in from_settings
        mwcls = load_object(clspath)
      File "/apps/software/anaconda2/lib/python2.7/site-packages/scrapy/utils/misc.py", line 46, in load_object
        mod = import_module(module)
      File "/apps/software/anaconda2/lib/python2.7/importlib/__init__.py", line 37, in import_module
        __import__(name)
      File "/apps/software/anaconda2/lib/python2.7/site-packages/scrapy/downloadermiddlewares/retry.py", line 22, in <module>
        from scrapy.core.downloader.handlers.http11 import TunnelError
      File "/apps/software/anaconda2/lib/python2.7/site-packages/scrapy/core/downloader/handlers/http11.py", line 22, in <module>
        from scrapy.core.downloader.tls import openssl_methods
      File "/apps/software/anaconda2/lib/python2.7/site-packages/scrapy/core/downloader/tls.py", line 4, in <module>
        from service_identity.exceptions import CertificateError
      File "/apps/software/anaconda2/lib/python2.7/site-packages/service_identity/__init__.py", line 7, in <module>
        from . import cryptography, pyopenssl
      File "/apps/software/anaconda2/lib/python2.7/site-packages/service_identity/pyopenssl.py", line 14, in <module>
        from pyasn1_modules.rfc2459 import GeneralNames
      File "/apps/software/anaconda2/lib/python2.7/site-packages/pyasn1_modules/rfc2459.py", line 23, in <module>
        from pyasn1.type import opentype
    ImportError: cannot import name opentype

    以上报错信息给的不完整,大佬从启动过程中发现service_identity是报错的最终原因。所以要善于使用报错信息和日志信息。自己百度的答案也是安装相关包:pip install -I -U service_identity 就能解决。

    可以离线安装:

    根据提示,去下载和安装service_identity,地址为:https://pypi.python.org/pypi/service_identity#downloads,下载whl文件

     离线安装:

    如果是whl格式的用:

    pip install  service_identity-18.1.0-py2.py3-none-any.whl

     如果是tar.gz格式自己摸索

    我用相同的方式安装的scrapy , 都是用的yum install scrapy . 但是为什么会在另一台机器上出现报错。可能在安装的时候scrapy只会检查有没有这个模块service_identity,而不会进行版本检查以更新。

    重新安装即可:

    pip install service_identity

  • 相关阅读:
    JavaWeb-RESTful(一)_RESTful初认识
    【算法】简单题_球弹跳高度的计算
    【算法】简单题_鸡兔同笼问题
    【算法】贪心算法_节目时间安排问题
    SVN_SVN的基本认识
    JavaWeb_(视频网址)_二、用户模块1 注册登陆
    【知识库】-数据库_MySQL性能分析之Query Optimizer
    【知识库】-数据库_MySQL之高级数据查询:去重复、组合查询、连接查询、虚拟表
    【知识库】-数据库_MySQL之基本数据查询:子查询、分组查询、模糊查询
    【知识库】-数据库_MySQL常用SQL语句语法大全示例
  • 原文地址:https://www.cnblogs.com/yoyowin/p/12018321.html
Copyright © 2020-2023  润新知