我在中断了一段时间后又回到了 Python。一些以前可以运行的项目现在出现了 lxml 的问题。
我有 latest source from github在本地安装并将其放在 Eclipse 项目中。
本项目在PyDev-PYTHONPATH中有如下内容:
/${PROJECT_DIR_NAME}
/${PROJECT_DIR_NAME}/src
在一个使用lxml
的项目中,在Project References中,我检查了lxml项目。
该项目中的一个文件具有:
import lxml
带有黄色下划线的警告:
未使用的导入:lxml
对于这一行:
from lxml import etree
它给出了错误:
Unresolved 导入 etree
像这样的一行:
kml = etree.Element("kml", nsmap = namespaces)
出现错误: undefined variable 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 仍然会出现同样的错误。
编辑:
答案是不使用源代码(使用适用于 Windows 的 python .exe 安装程序)并使用 from lxml import etree
,而不是 import lxml
。
最佳答案
您没有导入 etree
模块作为模块中的全局名称,只有 lxml
包本身。您需要导入 etree
来自 lxml
的模块包裹:
from lxml import etree
参见 lxml.etree
tutorial .
如果import lxml
有效但from lxml import etree
失败,你要么有另一个 lxml.py
或您正在尝试使用未编译的源代码分发的路径中的文件。使用:
import lxml
print(lxml.__file__)
查找并重命名有问题的文件。
- 如果指向
lxml.py
删除或重命名该文件。 - 如果指向
<PATH>/src/lxml/__init__.py
您正在尝试使用未编译的源代码分发。您必须编译 Python 扩展代码,或找到适用于您的平台的二进制分发版进行安装。
关于python - lxml: undefined variable etree,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34617067/