lxml几乎没有东西
我在我的系统上发现,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
是在导入整个包!这并不会让你自动访问这个包里的任何模块!-)