lxml:未定义的变量 etree
lxml: Undefined variable etree
我在短暂的休息后回到 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 时仍然出现同样的错误。
编辑:
答案是不使用源代码(windows 使用 python .exe 安装程序)并使用 from lxml import etree
,而不是 import lxml
。
您没有在模块中将 etree
模块作为全局名称导入,只导入了 lxml
包本身。您需要从 lxml
包中导入 etree
模块:
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 扩展代码,或者为您的平台找到一个二进制分发版来安装。
我在短暂的休息后回到 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 时仍然出现同样的错误。
编辑:
答案是不使用源代码(windows 使用 python .exe 安装程序)并使用 from lxml import etree
,而不是 import lxml
。
您没有在模块中将 etree
模块作为全局名称导入,只导入了 lxml
包本身。您需要从 lxml
包中导入 etree
模块:
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 扩展代码,或者为您的平台找到一个二进制分发版来安装。