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。
提前致谢。
答案 0 :(得分:10)
不,你只是做错了!请尝试,例如from lxml import etree
,您应该可以完全使用etree
。 import lxml
- 导入包! - 不是否允许您隐式访问任何软件包的模块! - )
答案 1 :(得分:1)
我认为所有lxml代码都在子包中。尝试
from lxml import etree
答案 2 :(得分:1)
__init__.py
文件中没有任何内容是完全正常的:http://docs.python.org/tutorial/modules.html#packages
该文件只是让Python知道它是一个包而不仅仅是一个包含大量模块的目录。
您只需要直接导入包内的模块。
from lxml import etree, html
等...