python - lxml: undefined variable etree

标签 python eclipse python-2.7 lxml

我在中断了一段时间后又回到了 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/

相关文章:

python - 引发电子邮件堆栈跟踪的异常

for循环内部/外部的python字典

python - 迭代 python 字典并使用 key 编辑所有字符串。

Azure 应用程序配置更改上的 Python 重新加载应用程序

java - Eclipse Runnable JAR 文件导出失败。未选择资源

java - Play 出错的未知原因!框架项目,在项目中只使用java

python - 'in' 运算符是否使用 "=="或 "is"进行比较?

python - Django 测试中禁用了 Airbrake 通知?

python - 删除列表中的重复项

Java小数部分被忽略