在Ubuntu Server 14.04上,Python 2.7.6出现'No module named libxml2'错误

3 投票
2 回答
4680 浏览
提问于 2025-04-18 07:55

我在尝试执行以下代码时遇到了问题:

myuser@my-pc:~$ python
Python 2.7.6 (default, Mar 22 2014, 22:59:56) 
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import libxml2
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named libxml2

我已经安装了 python-dev libxml2 libxml2-dev libxslt-dev 这些软件包,因为我在网上看到很多关于这些软件包的建议来解决我的问题,但结果并不好。

与此同时,在我的Ubuntu桌面上,没有任何更改的情况下,我可以成功地在python2.7命令行中使用 'import libxml2'。

你能给我一些建议,告诉我该如何解决这个问题吗?

2 个回答

3

你安装的包里没有包含Python绑定libxml2。你按照评论里的说法安装了共享库,但没有Python模块的话,Python程序是无法使用这个库的。

安装python-dev libxml2 libxml2-dev libxslt-dev听起来像是你准备从源代码构建Python模块,所以看看你正在跟随的说明里是否有其他步骤。

我认为你需要的模块页面在这里:http://xmlsoft.org/python.html。你可以查看这个SO的回答,里面有关于如何在OS-X上安装的说明,大部分也适用于Linux:https://stackoverflow.com/a/9797504/66349

3

你正在尝试安装共享对象库,但这些包不包含Python的绑定。

如果另一个服务器上的Python包安装在 /usr/lib/python2.7/dist-packages 这个路径下,那么那台机器上可能安装了 python-libxml2。它的 文件列表 肯定和你在另一台机器上看到的匹配:

/usr/lib/python2.7/dist-packages/drv_libxml2.py
/usr/lib/python2.7/dist-packages/libxml2.py
/usr/lib/python2.7/dist-packages/libxml2mod.so

以后如果你遇到不熟悉的Python库,可以用下面的命令查看模块的文件路径:

import modulename
print modulename.__file__

如果这是一个Ubuntu的包,你可以用下面的命令搜索它属于哪个包:

dpkg -S /path/to/file

不过要注意,文件名以 .pyc 结尾的是字节码缓存;要找 .py 结尾的文件。

撰写回答