经过一段时间的休整后我回到了Python。以前工作的一些项目现在有lxml的问题。
我在本地安装了latest source from github并将其放在Eclipse项目中。
该项目在PyDev-PYTHONPATH中有以下内容:
/ $ {} PROJECT_DIR_NAME
/ $ {PROJECT_DIR_NAME} / SRC
在使用lxml
的项目中,在项目参考中,我检查了lxml项目。
此项目中的文件包含:
import lxml
以黄色加下划线并带有警告:
未使用的导入:lxml
对于这一行:
from lxml import etree
它给出错误:
未解决的导入etree
像这样的一行:
kml = etree.Element("kml", nsmap = namespaces)
有错误:未定义变量etree
此项目在PyDev-PYTHONPATH中也有以下内容:
/ $ {} PROJECT_DIR_NAME
/ $ {PROJECT_DIR_NAME} / src
我读过这个问题,但我没有看到答案:
Python 2.7 on Google App Engine, cannot use lxml.etree
在Windows 10,64位计算机上。这在使用Windows 7的同一台机器上不是问题。不确定这是否是问题所在。不会这么认为。
我在运行配置中找到了PYTHONPATH的值。它有lxml:
D:\Program Files\eclipse\plugins\org.python.pydev_3.9.2.201502050007\pysrc\pydev_sitecustomize;
D:\My Documents\eclipse\workspace2\StateDivision;
D:\My Documents\eclipse\workspace2\StateDivision\src;
C:\Python27\podbc64;
D:\My Documents\eclipse\workspace2\lxml;
D:\My Documents\eclipse\workspace2\lxml\src;
D:\My Documents\eclipse\workspace2\XlsxWriter;
C:\Python27\ArcGISx6410.3\DLLs;
C:\Python27\ArcGISx6410.3\lib;
C:\Python27\ArcGISx6410.3\lib\lib-tk;C:\Python27\ArcGISx6410.3;
C:\Python27\ArcGISx6410.3\lib\site-packages;
C:\Program Files (x86)\ArcGIS\Desktop10.3\bin64;
C:\Program Files (x86)\ArcGIS\Desktop10.3\ArcPy;
C:\Program Files (x86)\ArcGIS\Desktop10.3\ArcToolBox\Scripts
清理项目,切换到Python 3.5,PYTHONPATH现在看起来像这样:
D:\Program Files\eclipse\plugins\org.python.pydev_3.9.2.201502050007\pysrc\pydev_sitecustomize;
D:\My Documents\eclipse\workspace2\StateDivision;
D:\My Documents\eclipse\workspace2\StateDivision\src;
D:\My Documents\eclipse\workspace2\lxml;
D:\My Documents\eclipse\workspace2\lxml\src;
D:\My Documents\eclipse\workspace2\lxml\src\lxml;
C:\Python35-32\DLLs;
C:\Python35-32\lib;
C:\Python35-32;C:\Python35-32\lib\site-packages
仍然与etree有同样的错误。
编辑:
答案是不使用source(对windows使用python .exe安装程序)并使用from lxml import etree
,而不是import lxml
。
答案 0 :(得分:3)
您没有将etree
模块作为全局名称导入模块,只导入lxml
包本身。您需要从etree
包中导入lxml
模块:
from lxml import etree
如果import lxml
有效但from lxml import etree
失败,则您的路径中有另一个lxml.py
文件掩盖了包,或您尝试使用的未编译的源代码分发。使用:
import lxml
print(lxml.__file__)
查找并重命名违规文件。
lxml.py
删除或重命名该文件。<PATH>/src/lxml/__init__.py
您尝试使用未编译的源代码分发。您必须编译Python扩展代码,或者找到要安装的平台的二进制发行版。