lxml在venv中的安装被破坏,无法使用beautifulsoup4。

问题描述 投票:0回答:1

我已经创建了一个虚拟环境来使用tensorflow。我遵循了来自 此处:

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

我已经安装了必要的模块,包括 美人汤4(BS4)lxml 使用

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报告它已经安装了,但我不能卸载或降级到不同的版本。比如说,我发现现有的安装:lxml 3

pip uninstall lxml

发现现有的安装:lxml 3.5.0 在usrlibpython3dist-packages处没有卸载lxml,在环境homexxxxxtensorflow_1-15_GPU之外无法卸载'lxml'。没有找到可以卸载的文件。

有谁知道如何强行卸载 "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的文件。只有 python2.7 和 python3.5m (我想知道 3.5m 是什么)。

python xml-parsing
1个回答
0
投票

正如我在编辑中提到的,当我试图降级时,抛出了一个错误信息(仅此一次)。lxml:

pyconfig.h。无此文件或目录

这让我检查了python3.6的实际库。它们缺失了,在使用...安装后,问题就解决了。

sudo apt install python3.6-dev

安装后,问题就解决了。

© www.soinside.com 2019 - 2024. All rights reserved.