【问题标题】:Twisted Import Error when using Scrapy in Python 3在 Python 3 中使用 Scrapy 时出现扭曲的导入错误
【发布时间】:2016-06-19 15:23:17
【问题描述】:

尝试在 Python 3 中使用 Scrapy 时出现以下错误。 我正在使用 Ubuntu 16.04 并安装 python3-twisted 并没有解决问题。

  File "/home/fran/.local/lib/python3.5/site-packages/scrapy/crawler.py", line 150, in crawl
    crawler = self._create_crawler(crawler_or_spidercls)
  File "/home/fran/.local/lib/python3.5/site-packages/scrapy/crawler.py", line 166, in _create_crawler
    return Crawler(spidercls, self.settings)
  File "/home/fran/.local/lib/python3.5/site-packages/scrapy/crawler.py", line 46, in __init__
    self.extensions = ExtensionManager.from_crawler(self)
  File "/home/fran/.local/lib/python3.5/site-packages/scrapy/middleware.py", line 56, in from_crawler
    return cls.from_settings(crawler.settings, crawler)
  File "/home/fran/.local/lib/python3.5/site-packages/scrapy/middleware.py", line 32, in from_settings
    mwcls = load_object(clspath)
  File "/home/fran/.local/lib/python3.5/site-packages/scrapy/utils/misc.py", line 44, in load_object
    mod = import_module(module)
  File "/usr/lib/python3.5/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 986, in _gcd_import
  File "<frozen importlib._bootstrap>", line 969, in _find_and_load
  File "<frozen importlib._bootstrap>", line 958, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 673, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 662, in exec_module
  File "<frozen importlib._bootstrap>", line 222, in _call_with_frames_removed
  File "/home/fran/.local/lib/python3.5/site-packages/scrapy/extensions/memusage.py", line 16, in <module>
    from scrapy.mail import MailSender
  File "/home/fran/.local/lib/python3.5/site-packages/scrapy/mail.py", line 23, in <module>
    from twisted.mail.smtp import ESMTPSenderFactory
ImportError: No module named 'twisted.mail.smtp'

【问题讨论】:

  • 也许尝试安装twis​​ted sudo apt-get install python-twisted
  • 也试过了,没有成功
  • @FranGoitia,你用的是什么版本的scrapy?在我看来,您使用的是不兼容 python3 的 Scrapyfrom twisted.mail.smtp import ESMTPSenderFactorymoved in Scrapy 1.1。请升级到 Scrapy 1.1

标签: python python-3.x ubuntu scrapy twisted


【解决方案1】:

Scrapy 的 Python 3 支持仍处于测试阶段,并且(根据 release notes

不支持发送邮件

所以你不可能做任何事情来解决这个问题。

【讨论】:

  • 我不需要发送电子邮件。我可以在 settings.py 中更改某些内容以防止加载此功能并导入此模块吗?
  • 您是否启用了scrapy.extensions.memusage.MemoryUsage 扩展?如果是这样,请将其删除到您的 EXTENSIONS 字典中。另外,我认为在此扩展的设置中将此扩展导入为using mail is disabled by default 失败是scrapy 中的一个错误。
  • 如果您不需要邮件通知,scrapy.extensions.memusage.MemoryUsage 可与 Python 3 和 Scrapy 1.1 一起使用。在 Twisted 中导入不支持 Python3 的 SMTP 仅在 Scrapy 1.1 与 Scrapy 1.0 中 imported when needed
【解决方案2】:

Scrapy 不支持使用 Python 3 发送邮件。

这是 Twisted 的一个限制,它还没有移植它的 twisted.mail 模块!
很遗憾,Pull 请求正在等待处理

参见:

  1. Twisted #8770

  2. [#8770] Port twisted.mail.smtp to Python 3 #509

【讨论】:

  • 有一个 PR,但还没有经过审查,并且缺少很多测试覆盖率。需要有人加紧完成开发。
猜你喜欢
  • 2010-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-10
  • 2017-05-06
  • 2021-05-31
  • 2018-01-25
  • 1970-01-01
相关资源
最近更新 更多