解决lxml导入etree模块报错(或beautifulsoup使用xml解析器时报错)

Linux下直接pip安装的lxml模块可能是不完整的,import lxml正常,但是from lxml import etree就会报错:

ImportError: cannot import name 'etree' from 'lxml'

同时,这个问题也是造成beautifulsoup库选择xml解析器时会报错的罪魁祸首:

bs4.FeatureNotFound: Couldn't find a tree builder with the features you requested: lxml. Do you need to install a parser library?

网上各种解决方案大多在说lxml库本身的安装,什么卸载重装啊,降低版本啊,诸如此类。但这些方案并没有触及问题的本质,很可能并不管用。

其实,手动查看python site-packages目录下的lxml库文件,会发现其目录下是包含etree相关的文件的,这暗示问题并不在于本地的lxml库缺失/取消了etree模块:

在这里插入图片描述

实际上问题是出在lxml的依赖库有缺失,而不是lxml本身有缺失。 根据lxml的官方文档,lxml在非windows环境下需要libxml2和libxslt作为依赖库,而在Linux系统下安装lxml连同所有依赖库最快的方式是通过你使用的Linux发行版的包管理系统,如:

sudo apt-get install python3-lxml

这样Linux的包管理系统会自动将所有依赖项都安装好,不需要再手动一个一个安装。(你当然也可以选择手动一个一个安装,如果需要教程的话,同样在官方文档有提及,可自行查阅)

在这里插入图片描述
(我的系统是openwrt,因此包管理系统使用opkg,但是道理和用apt-get是一样的)

按照上面的方式重新安装好lxml后问题即可解决:

在这里插入图片描述
而在Windows下,直接pip安装或通过whl安装即可,内部已包含有所需的依赖库,正常情况下不会出现上述问题,这个在官网中也有提及,具体信息可参考官网原文。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值