我在mac上安装了lxml并尝试在我的代码中使用它,导致输入tostring和tounicode时出错。 Python根本看不到它。我有什么想法吗?
以下是导致问题的代码 -
from lxml.etree import tostring
from lxml.etree import tounicode
我收到一个未解决的导入错误
此外,我的IDE(eclipse)能够看到lxml.etree模块的 init .py文件。这是它看到的---
# this is a package
def get_include():
"""
Returns a list of header include paths (for lxml itself, libxml2
and libxslt) needed to compile C code against lxml if it was built
with statically linked libraries.
"""
import os
lxml_path = __path__[0]
include_path = os.path.join(lxml_path, 'includes')
includes = [include_path, lxml_path]
for name in os.listdir(include_path):
path = os.path.join(include_path, name)
if os.path.isdir(path):
includes.append(path)
return includes
感谢您的帮助。
编辑:
我看到的唯一日志是
未解决的导入:tostring
未解决的导入:tounicode
当我在导入tostring之前添加以下行时,它没有错误 - 从lxml导入etree
还提供一些关于我想要做的事情的背景知识。我从这里获得了可读性代码(https://github.com/buriy/python-readability)并尝试在我的项目中使用它。
EDIT2:我解决了问题,但仍然不明白为什么。我想直接使用可读性项目中的代码,而无需使用easy_install安装软件包。这个想法是进入代码,以便我理解它的作用。但是当我将代码复制到我的项目中时,我在可读性代码中得到了上述错误。如果我使用easy_install安装软件包,那么我只需导入可读性导出的类并使用它。
那么有人可以告诉我直接使用代码和安装包之间的区别是什么?什么是.egg文件?如何创建一个?
答案 0 :(得分:0)
在lxml的代码中,它动态加载模块。这使IDE无法分析引用,因为IDE只分析原始代码。
答案 1 :(得分:0)
我发现这个解决方案在尝试解析资源并在我的Intellij IDEA Python项目中导入etree
时非常有用:
看一下lxml tutorial建议这个解决方案:
try:
from lxml import etree
print("running with lxml.etree")
except ImportError:
try:
# Python 2.5
import xml.etree.cElementTree as etree
print("running with cElementTree on Python 2.5+")
except ImportError:
try:
# Python 2.5
import xml.etree.ElementTree as etree
print("running with ElementTree on Python 2.5+")
except ImportError:
try:
# normal cElementTree install
import cElementTree as etree
print("running with cElementTree")
except ImportError:
try:
# normal ElementTree install
import elementtree.ElementTree as etree
print("running with ElementTree")
except ImportError:
print("Failed to import ElementTree from any known place")