我在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包相关联。 任何帮助非常感谢!
凯西
答案 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;。