无法导入名称“ etree”

时间:2018-08-03 20:11:12

标签: python lxml pythonista

尝试从serpscrap软件包中运行示例.py时出现错误。

我在使用Pythonista的iPhoneX。

任何帮助将不胜感激。

这是回溯

Traceback (most recent call last):
  File "/private/var/mobile/Containers/Shared/AppGroup/C27C5B11-1804-47B9-AF18-7287A8337C55/Pythonista3/Documents/testing/serpscrapetest.py", line 3, in <module>
    import serpscrap
  File "/private/var/mobile/Containers/Shared/AppGroup/C27C5B11-1804-47B9-AF18-7287A8337C55/Pythonista3/Documents/site-packages-3/serpscrap/__init__.py", line 5, in <module>
    from serpscrap.serpscrap import SerpScrap
  File "/private/var/mobile/Containers/Shared/AppGroup/C27C5B11-1804-47B9-AF18-7287A8337C55/Pythonista3/Documents/site-packages-3/serpscrap/serpscrap.py", line 11, in <module>
    from scrapcore.core import Core
  File "/private/var/mobile/Containers/Shared/AppGroup/C27C5B11-1804-47B9-AF18-7287A8337C55/Pythonista3/Documents/site-packages-3/scrapcore/core.py", line 8, in <module>
    from scrapcore.cachemanager import CacheManager
  File "/private/var/mobile/Containers/Shared/AppGroup/C27C5B11-1804-47B9-AF18-7287A8337C55/Pythonista3/Documents/site-packages-3/scrapcore/cachemanager.py", line 11, in <module>
    from scrapcore.parsing import Parsing
  File "/private/var/mobile/Containers/Shared/AppGroup/C27C5B11-1804-47B9-AF18-7287A8337C55/Pythonista3/Documents/site-packages-3/scrapcore/parsing.py", line 6, in <module>
    from scrapcore.parser.google_parser import GoogleParser
  File "/private/var/mobile/Containers/Shared/AppGroup/C27C5B11-1804-47B9-AF18-7287A8337C55/Pythonista3/Documents/site-packages-3/scrapcore/parser/google_parser.py", line 7, in <module>
    from scrapcore.parser.parser import Parser
  File "/private/var/mobile/Containers/Shared/AppGroup/C27C5B11-1804-47B9-AF18-7287A8337C55/Pythonista3/Documents/site-packages-3/scrapcore/parser/parser.py", line 7, in <module>
    import lxml.html
  File "/private/var/mobile/Containers/Shared/AppGroup/C27C5B11-1804-47B9-AF18-7287A8337C55/Pythonista3/Documents/site-packages-3/lxml/html/__init__.py", line 54, in <module>
    from .. import etree
ImportError: cannot import name 'etree'

2 个答案:

答案 0 :(得分:2)

由于lxml依赖性,SerpScrap目前在iOS上不起作用。 我将更新文档以澄清这一点。

但也许您看看https://github.com/pybee/Python-Apple-support。 我对iOS不熟悉,也许有人可以检查这是否有助于解决此问题。否则,请随时在serpscrap github页面上打开一个问题。

答案 1 :(得分:0)

serpscrap显然需要lxml,尽管出于某些原因it only documents that requirement for Windows,而非所有平台。

您无法在Pythonista中安装需要C扩展模块的软件包,例如lxml。您似乎已经安装了lxml的纯Python部分, 1 ,但是如果没有C扩展模块,那将毫无用处。

有一个未解决的问题,#245是将lxml添加为Pythonista的预装软件包,这可能会解决您的问题。

因此,您的选择是:

  • 帮助Pythonista构建lxml,以便他们关闭该错误并将lxml添加到下一个版本。
  • 修改serpscrap以使其不使用lxml(如果仅使用lxml.etree,则有可能与stdlib ETree实现一起使用)。
  • File a feature request with serpscrap,希望其他人也能做到。
  • 切换到不需要lxml的其他抓取工具。

1。我不知道怎么会这样。安装应该会失败。但是也许serpscrap可以在Linux和macOS上运行但在iOS上却不能正常运行,这就是为什么它们只将lxml列为Windows依赖项的原因?