环境:python3.8.5 + lxml4.6.3

编辑器:PyCharm

1. 首先使用解释器环境导入模块看看:from lxml import etree

可以正常读取HTML代码,而且还可以自动匹配提示,如下:

还有一种导入方式: 

from lxml import html
etree = html.etree

同样可以正常解析代码,而且自动匹配提示

2. 虚拟环境导入模块:from lxml import etree

有一个报错信息,我万万没想到的是程序居然可以运行。(不过没有自动匹配提示)

错误提示是:Cannot find reference 'etree' in '__init__.py' ,于是我想是不是虚拟环境中lxml库缺少某种依赖或者__init__.py文件中需要定义etree什么什么的。于是对比了解释器和虚拟环境中的lxml文件夹及__init__.py文件,没有任何区别,那百度吧

首先声明:这不是一个程序错误! 这不是一个程序错误! 这不是一个程序错误!
但是本着一个科学严谨(强迫症本强)的态度,必须要消除这个警告!!!
这只是Pycharm 这个IDE的bug,不影响程序的运行。如果将程序在Sublime 或者spyder中运行就不会出现这种错误。

好吧就这样,虚拟环境导入模块:from lxml import etree也没问题可以运行, 这是PyCharm的bug;(我试了在VS Code上可以运行)

那在虚拟环境中以第二种方式导入模块呢?

没毛病!还是可以正常运行

我的环境是:python3.8.5 + lxml4.6.3,根据以上示例那么网上有人说的在python3.5之后的 lxml 模块中不能再直接引入etree模块是一个错误的说法(这只是Pycharm 这个IDE的bug?

在我的电脑上2种环境,2种导入方式都是木有问题的,老版本多少都有可能出点问题

模块导入方式:

1. from lxml import etree

2. from lxml import html

etree = html.etree

有问题欢迎大家在下方评论留言!

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐