Windows上的lxml错误 - AttributeError:module' lxml'没有属性' etree'

时间:2016-12-09 18:13:47

标签: python lxml anaconda

我在Windows 32位上使用带有Python 3.5的Anaconda v4.2,并且想要使用lxml etree。我的Anaconda发行版包括lxml 3.6.4,但是我的IDE(PyCharm,虽然我在使用Jupyter Notebook运行代码时遇到同样的错误)唯一的lxml函数可以看到是get_include()。以下代码:

import lxml
full_xml_tree = lxml.etree.parse('myfile.xml')

只是给我错误:

AttributeError: module 'lxml' has no attribute 'etree'

我也尝试过为Windows安装VisualC ++编译器,但这没有任何区别。我尝试在命令行上使用conda重新安装lxml,再次没有更改我的错误。 我错过了什么?似乎lxml.get_include()函数没有找到要包含的任何文件,我也不太了解etree.cp35-win32.pyd文件(我假设它包含编译的etree)代码??)应该与lxml包相关联。 任何帮助非常感谢!

凯西

1 个答案:

答案 0 :(得分:5)

这是如何导入 Rank id 0 1 a 1 2 a 2 3 a 3 4 a 4 5 a 5 1 c 6 2 c 7 NaN c 8 NaN c 9 NaN c 10 1 e 11 2 e 12 3 e 13 NaN e 14 NaN e (ElementTree)子包的一个怪癖。

您必须明确导入子包才能使其可用:

etree

实现您尝试做的事情的推荐方法是导入import lxml.etree full_xml_tree = lxml.etree.parse('myfile.xml') 模块:

ElementTree

请参阅:https://docs.python.org/3.6/library/xml.etree.elementtree.html

为什么会这样?

想象一个包含这样的目录结构的包:

import xml.etree.ElementTree as ET
tree = ET.parse('myfile.xml')

以及test_pkg/__init__.py test_pkg/shown_module.py test_pkg/hidden_module.py 包含以下内容的地方:

__init__.py

使用此软件包直接使用from . import shown_module

shown_module

>>> import test_pkg >>> test_pkg.shown_module <module 'test_pkg.shown_module' from '.../test_pkg/shown_module.py'> 无法直接使用:

hidden_module

但是如果导入它可以使用:

>>> test_pkg.hidden_module
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: module 'test_pkg' has no attribute 'hidden_module'

但是,我不知道为什么ElementTree是&#34;隐藏&#34;。