lxml.etree中未解析的导入tostring

时间:2013-03-29 14:54:15

标签: python lxml

我在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文件?如何创建一个?

2 个答案:

答案 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")