python报错ImportError: cannot import name 'etree' from 'lxml' (E:\python\python\lib\site-packages\lxml

lxml安装正常,import lxml正常,from lxml import etree 报错,查了很多资料,摘两个“网友普遍觉得好用但对我的问题并没有用”的方法于下,也许能解决其他人的问题:

1、电脑中具有 lxml 同名文件,重命名即可。

2、高版本lxml没有etree模块。有网友确定lxml4.2.5版本带有etree模块,且该版本lxml支持python3.7.4版本。安装命令:

pip install lxml==4.2.5

疑问汇总:

问题1:我使用anaconda管理python包,查询发现pip安装第三方包的路径为E:\python\AnacondaForPython\NewInstall\Lib\site-packages
而不是E:\python\python\Lib\site-packages,为什么?不是说python自带pip?这个pip显示是anaconda下啊。

问题2:在做项目中pycharm我的环境选择一直是:
python报错ImportError: cannot import name 'etree' from 'lxml' (E:\python\python\lib\site-packages\lxml_第1张图片
因此python3.8中确实缺少很多在用的包,是无法直接运行的。我根据网上教程修改python3.8/python.exe与anaconda自带的python.exe,以及系统环境变量配置,但是之后,在命令行中始终只能成功调用python3.8,而无法调用python3.7,为什么?

问题3: 本文一开始所提到的from lxml import etree 报错,是在命令行运行python3.8存在的,而通过Anaconda Prompt 启动python3.7可以成功运行。于是我把E:\python\AnacondaForPython\NewInstall\Lib\site-packages整个文件夹(第三方包)复制到默认python版本下E:\python\python\Lib\site-packages(清空原住民),结果python3.8仍然报错,不知道是因为有其他依赖没有一起移过来,还是因为这并不是根本原因?目前无解。

后记:

针对anaconda与原装python是否冲突与混乱的问题,暂时无解。
针对这个报错,打算用anaconda环境来处理,再度尝试“如何启动不同版本python”,只需添加环境变量即可,那么之前为什么一直失败???因为路径问题,路径不要精确到python.exe文件,而是到python.exe所在的父目录!!!

错误写法:
在这里插入图片描述

正确写法:
python报错ImportError: cannot import name 'etree' from 'lxml' (E:\python\python\lib\site-packages\lxml_第2张图片

要成功启动不同版本python,还要注意一点重命名,每个python.exe不要重名。

(says:虽然利用包完整的python3.7解决了,但是仍未知python3.8为何报错,以及,我在cmd无论是pip / conda 安装,路径均为anaconda下,也就是说原住民 python3.8 的包路径无人问津,似乎只能通过pycharm选择环境后“+”来安装了?)

你可能感兴趣的:(Python与爬虫)