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

2023-11-11

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安装即可,内部已包含有所需的依赖库,正常情况下不会出现上述问题,这个在官网中也有提及,具体信息可参考官网原文。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • 多处理中的动态池大小?

    有没有办法动态调整multiprocessing Pool尺寸 我正在编写一个简单的服务器进程 它会产生工作人员来处理新任务 使用multiprocessing Process对于这种情况可能更适合 因为工作人员的数量不应该是固定的 但我需
  • 将 numpy 数组合并为单个 int

    numpy 数组怎么可以这样 10 22 37 45 转换为单个 int32 数字 如下所示 10223745 这可以工作 gt gt gt int join map str 10 22 37 45 10223745 基本上你使用map s
  • 在Python中从大文件中搜索单词列表

    我是新蟒蛇 我有一个单词列表和一个非常大的文件 我想删除文件中包含单词列表中的单词的行 单词列表按排序给出 并且可以在初始化期间输入 我正在努力寻找解决这个问题的最佳方法 我现在正在进行线性搜索 这花费了太多时间 有什么建议么 您可以使用i
  • 使用 Django 将文件异步上传到 Amazon S3

    我使用此文件存储引擎在上传文件时将文件存储到 Amazon S3 http code welldev org django storages wiki Home http code welldev org django storages w
  • 协程从未被等待

    我正在使用一个简单的上下文管理器 其中包含一个异步循环 class Runner def init self self loop asyncio get event loop def enter self return self def e
  • 在 python pandas 中,如何保存“网格图”?

    我对 pandas 绘图工具很陌生 在文档中 以下命令非常方便 myplot rts ret hist bins 50 by rts primary mic 然而 当我尝试从图中获取图形参考并保存它时 问题就出现了 myfigure myp
  • 在Python上获取字典的前x个元素

    我是Python的新手 所以我尝试用Python获取字典的前50个元素 我有一本字典 它按值降序排列 k 0 l 0 for k in len dict d l 1 if l lt 51 print dict 举个小例子 dict d m
  • 如何使用scrapy检查网站是否支持http、htts和www前缀

    我正在使用 scrapy 来检查某些网站是否工作正常 当我使用http example com https example com or http www example com 当我创建 scrapy 请求时 它工作正常 例如 在我的pa
  • python 中的 <> 运算符有什么作用?

    我刚刚遇到这个here http www feedparser org feedparser py 总是这样使用 if string1 find string2 lt gt 1 pass 什么是 lt gt 运算符这样做 为什么不使用通常的
  • 运行 Python 单元测试,以便成功时不打印任何内容,失败时仅打印 AssertionError()

    我有一个标准单元测试格式的测试模块 class my test unittest TestCase def test 1 self tests def test 2 self tests etc 我的公司有一个专有的测试工具 它将作为命令行
  • Paste.httpserver 并通过 HTTP/1.1 Keep-alive 减慢速度;使用 httperf 和 ab 进行测试

    我有一个基于paste httpserver 的Web 服务器作为HTTP 和WSGI 之间的适配器 当我使用 httperf 进行性能测量时 如果每次使用 num conn 启动一个新请求 我每秒可以执行超过 1 000 个请求 如果我使
  • Linux 上的 RTLD_LOCAL 和dynamic_cast

    我们有一个由应用程序中的一些共享库构成的插件 我们需要在应用程序运行时更新它 出于性能原因 我们在卸载旧插件之前加载并开始使用新插件 并且只有当所有线程都使用旧插件完成后 我们才卸载它 由于新插件和旧插件的库具有相同的符号 我们dlopen
  • 在骨架图像中查找线 OpenCV python

    我有以下图片 我想找到一些线来进行一些计算 平均长度等 我尝试使用HoughLinesP 但它找不到线 我能怎么做 这是我的代码 sk skeleton mask rows cols sk shape imgOut np zeros row
  • 如何指示 urwid 列表框的项目数多于当前显示的项目数?

    有没有办法向用户显示 urwid 列表框在显示部分上方 下方有其他项目 我正在考虑类似滚动条的东西 它可以显示条目的数量 或者列表框顶部 底部的单独栏 如果这个行为无法实现 有哪些方法可以实现这个通知 在我的研究过程中 我发现这个问题 ht
  • 使用 PIL 在 Tkinter 中显示动画 GIF

    我正在尝试制作一个程序来使用 Tkinter 显示动画 GIF 这是我最初使用的代码 from future import division Just because division doesn t work right in 2 7 4
  • 无法通过 Python 子进程进行 SSH

    我需要通过堡垒 ssh 进入机器 因此 该命令相当长 ssh i
  • 如何从namedtuple实例列表创建pandas DataFrame(带有索引或多索引)?

    简单的例子 from collections import namedtuple import pandas Price namedtuple Price ticker date price a Price GE 2010 01 01 30
  • python从二进制文件中读取16字节长的双精度值

    我找到了蟒蛇struct unpack 读取其他程序生成的二进制数据非常方便 问题 如何阅读16 字节长双精度数出二进制文件 以下 C 代码将 1 01 写入二进制文件三次 分别使用 4 字节浮点型 8 字节双精度型和 16 字节长双精度型
  • 定义在文本小部件中双击时选择哪些字符

    在 Windows 上 双击文本小部件中的单词也将选择连接的标点符号 有什么方法可以定义您想要选择的角色吗 tcl wordchars该变量的值是一个正则表达式 可以设置它来控制什么被视为 单词 字符 例如 通过双击 Tk 中的文本来选择单
  • 嵌入式linux编写AT命令

    我在向 GSM 模块写入 AT 命令时遇到问题 当我使用 minicom b 115200 D dev ttySP0 term vt100 时它工作完美 但我不知道如何在 C 代码中做同样的事情 我没有收到任何错误 但模块对命令没有反应 有

随机推荐

  • 【好文分享】亲试可行!简单快捷!如何在Ubuntu上编译Linux0.11

    2023年9月10日 周日上午 昨天晚上按照博客园的这篇文章试了一下 很快就成功在Ubuntu上编译运行了Linux0 11 https www cnblogs com chaoguo1234 p 16883932 html
  • linux redhat6.5 64位 login登陆无限循环

    场景 公司VC上虚机要迁移 通过拷贝vmfs文件方式迁移 开机后 发现无法登陆 一开始怀疑密码有问题 后来排除 然后网上搜索要修改 etc pam d login里边的参数 64位系统将 lib security pam limits so
  • Eclipse 报错: “Workspace in use or cannot be created, chose a different one.”

    打开eclipse报错 Workspace in use or cannot be created chose a different one 意识是 正在使用或无法创建工作区 选择另一个 解决办法 找到你eclipse得工作区 打开 me
  • C++ typeid运算符:获取类型信息

    typeid 运算符用来获取一个表达式的类型信息 类型信息对于编程语言非常重要 它描述了数据的各种属性 对于基本类型 int float 等C 内置类型 的数据 类型信息所包含的内容比较简单 主要是指数据的类型 对于类类型的数据 也就是对象
  • vue2和vue3 父子组件传参及区别

    vue3 1 父组件传子组件 在父组件的子组件标签中定义一个属性 在子组件中用defineProps接收父组件传来的值 父组件
  • python读取excle表中的数据

    没什么可介绍的 直接看代码 import pandas as pd from pandas import DataFrame if name main 读取excle表中的数据 file path r D ex Concrete Data
  • 从零搭建一个vue项目

    为了几个姐妹的需求 本文详细图解怎么样从零搭建一个vue项目 供参考 第一步 了解工具 首先我们需要一些工具 比如npm nodejs vue cli 和一个编译器vscode 也可以用别的 这里用vscode作为开发工具演示 第二步 检查
  • VMware虚拟机首次安装centos7.15后配置网络和关闭防火墙

    听了朋友的意见打算学下linux 学习当然是从安装开始了 网上找了个最新版的边看教程边装 网上看了好几个不同的教程 安装的时候还不难 都比较详细 但配置网络时都说的不太清楚 毕竟我没什么基础 如果不说清楚的话 很多地方我也不太懂 看了很多个
  • 编译内核的相关知识

    1 在PC端搭建环境 ubantu 2 树莓派等芯片带操作系统的启动过程 C51 STM32 裸机 用C直接操控底层寄存器实现相关业务 业务流程型的裸机代码 3 带有操作系统的 X86 intel windows 启动过程 电源 gt bi
  • openGL之API学习(三十)深度缓冲区深度值为负值

    通过 glReadPixels 0 0 WINDOW WIDTH WINDOW HEIGHT GL DEPTH COMPONENT GL UNSIGNED BYTE tmpPixelsBuffer 从帧缓冲区中读取深度信息 深度值竟然是负值
  • 插入排序 Insertion Sort

    插入排序 Insertion Sort 基本概念 插入排序的实现 时间复杂度和空间复杂度 稳定性 基本概念 从 index 1开始 不断将元素插入右边已经排好序的数组 适用于少量元素 Example 9 2 1 4 3 Step 1 9 2
  • 理解分组卷积与深度可分离卷积

    这两种卷积分别是在ResNext论文与MobileNet系列中体现的 貌似Xception中也有深度可分离卷积的体现 作用都很简单 为了降参 目录 1 分组卷积 group convolution 2 深度可分离卷积 depthwise s
  • 测试用例设计--等价类的几个例子

    等价类的设计思路 根据输入条件 确定等价类 包括有效等价类和无效等价类 建立等价类列表 为每个等价类规定一个唯一的编号 设计一个测试用例 使其尽可能多地覆盖尚未被覆盖的有效等价类 重复这一步 直到所有的有效等价类被覆盖完为止 设计一个测试用
  • 如何查看chrome浏览器插件位置 查看chrome浏览器插件位置的方法

    Chrome浏览器插件种类目繁多 插件支持功能也比较强大 Chrome浏览器内的下载的插件往往也可以被其他浏览器支持 那么如何查看chrome浏览器插件位置 想知道谷歌浏览器插件的存放位置小伙伴快来阅读下文教程 谷歌浏览器最新版下载2020
  • 面试大盘表 - 时间维护功能

    需求描述 由于本人主要负责干部和招聘板块 招聘板块接到了要做一个面试大盘表的需求 需要展示面试官的面试情况 还需要面试官维护自己的可面试时间 之后人资进行面试安排 然后面试者到手机端进行自主选择面试官和面试场次 最终展示 功能描述 移出维护
  • 联想全系列 Lenovo ThinkPad ThinkBook Thinkcenter ThinkStation 原厂恢复系统

    原厂恢复系统镜像 出厂预装正版系统 自带预装Office 自带一键恢复 联网自动激活系统 根据电脑型号或者MTM下载对应的系统恢复镜像 2022 4 30更新 型号后面括号里是MTM号 可对应个人电脑自行对应查找 如没有其对应机型可以Wei
  • C++入门泛型编程介绍

    目录 函数模板 函数模板格式 函数模板的实例化 补充 类模板 类模板的定义格式 类模板的实例化 非类型模板参数 模板特化 函数模板特化 类模板特化 全特化 偏特化 模板分离编译 模板总结 泛型编程 编写与类型无关的通用代码 是代码复用的一种
  • SQLite安装与使用

    在之前的文章中 给出了一个数据库知识的概览 数据库概览 本文介绍一些基础的 常用的SQLite数据库知识 SQLite基础 SQL基础语法 插入 INSERT INTO 表名 列名1 VALUES 列1值 修改 UPDATE 表名 SET
  • background-size属性详解

    css background size 属性详解 background size 指定背景图像大小 以象素或百分比显示 当指定为百分比时 大小会由所在区域的宽度 高度以及 background origin 图片的起始位置 的位置决定 还可
  • 解决lxml导入etree模块报错(或beautifulsoup使用xml解析器时报错)

    Linux下直接pip安装的lxml模块可能是不完整的 import lxml正常 但是from lxml import etree就会报错 ImportError cannot import name etree from lxml 同时