【问题标题】:Broken installation of lxml in venv cannot be used with beautifulsoup4venv中lxml的安装损坏不能与beautifulsoup4一起使用
【发布时间】:2020-05-06 12:31:15
【问题描述】:

我创建了一个用于 tensorflow 的虚拟环境。我已按照here 的说明进行操作:

virtualenv --system-site-packages -p python3 ./venv

我已经安装了必要的模块,包括 beautiful soup 4 (bs4)lxml using

pip install beautifulsoup4
pip install lxml

这似乎很成功。但是当我试图解析一个 xml 文件时,我收到一个错误,比如我还没有安装 lxml:

with open(path/to/xml.file)) as f:
    soup = BeautifulSoup(f, 'xml')

bs4.FeatureNotFound:找不到具有这些功能的树生成器 您要求:xml。需要安装解析器库吗?

如果我尝试其他解析器按预期工作(或类似的东西):

soup = BeautifulSoup(f, 'html.parser')

似乎工作正常,而:

soup = BeautifulSoup(f, 'html5lib') 

加载成功,但未正确读取 xml。不过这里不是问题。

由于某种原因,我的 lxml 安装似乎损坏了。

Pip 报告它已安装,但我无法将其卸载或降级到其他版本。例如:

pip uninstall lxml

找到现有安装:lxml 3.5.0
不在 /usr/lib/python3/dist-packages 卸载 lxml,外部环境 /home/xxxxx/tensorflow_1-15_GPU
无法卸载“lxml”。找不到要卸载的文件。

有没有人知道如何强制卸载 lxml 或至少解决问题?

我使用的是 Ubuntu 16.04、python 3.6、beautifulsoup4 4.4.1 和 lxml 3.5.0

编辑:
我最近切换到 python3.6,似乎我缺少一些库。尝试降级 lxml 报告(以及其他)错误:

pyconfig.h: 没有这样的文件或目录

这可能是我的模块损坏的原因。 python3.6我没有这样的文件。只有 python2.7 和 python3.5m(我想知道 3.5m 是什么)。

【问题讨论】:

  • 安装beautifulsoup4lxml之前有没有激活虚拟环境??
  • 是的,两者都安装在 venv 中

标签: python xml-parsing


【解决方案1】:

正如我在编辑中提到的,当我尝试降级 lxml 时(仅)抛出了一条错误消息:

pyconfig.h: 没有这样的文件或目录

这使我检查了 python3.6 的实际库。它们丢失了,并且在使用以下方法安装它们之后:

sudo apt install python3.6-dev

问题已解决。

【讨论】:

    猜你喜欢
    • 2015-09-29
    • 2014-05-01
    • 2021-11-10
    • 2020-04-01
    • 2021-08-03
    • 2014-07-15
    • 2012-12-18
    • 2012-12-20
    • 1970-01-01
    相关资源
    最近更新 更多