lxml几乎没有东西

1 投票
3 回答
670 浏览
提问于 2025-04-15 18:37

我在我的系统上发现,Python的lxml这个包似乎完全坏掉了。我不太确定具体是什么问题,因为所有的文件看起来都在那儿。我的怀疑是问题出在__init__.py这个文件上,但我对系统的了解还不够,无法准确诊断或解决这个问题。

这里有一些代码,我觉得可以帮助诊断问题:

Python 2.6.4 (r264:75706, Dec  7 2009, 18:45:15) 
[GCC 4.4.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import lxml
>>> dir(lxml)
['__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__']
>>> print lxml.__path__
['/usr/lib/python2.6/dist-packages/lxml']
>>> c = open("/usr/lib/python2.6/dist-packages/lxml/__init__.py", "r")
>>> for line in c:
...     print line
... 
# this is a package



>>> c.close()
>>> import os
>>> os.system("ls /usr/lib/python2.6/dist-packages/lxml/")
builder.py      ElementInclude.py   __init__.py    sax.pyc
builder.pyc     ElementInclude.pyc  __init__.pyc       usedoctest.py
cssselect.py        _elementpath.py objectify.so       usedoctest.pyc
cssselect.pyc       _elementpath.pyc    pyclasslookup.py
doctestcompare.py   etree.so        pyclasslookup.pyc
doctestcompare.pyc  html        sax.py
0
>>> 

就像我说的,我怀疑__init__.py里有问题,但我并不是100%确定。

另外,我使用的是Linux Mint 8,差不多相当于Ubuntu 9.10。

提前谢谢大家。

3 个回答

1

我觉得所有的lxml代码都在子包里面。你可以试试这个:

from lxml import etree
1

一个 __init__.py 文件里面什么都没有是完全正常的:http://docs.python.org/tutorial/modules.html#packages

这个文件的作用就是告诉Python,这个文件夹是一个包,而不是一个随便放了一堆模块的普通文件夹。

你只需要直接导入包里面的模块就可以了。

from lxml import etree, html

等等...

10

不,你只是做错了!试试,比如说 from lxml import etree,这样你就可以完全使用 etree 了。用 import lxml 是在导入整个!这并不会让你自动访问这个包里的任何模块!-)

撰写回答