如何在Ubuntu上安装LXML


441

我在Ubuntu 11上使用easy_install安装lxml遇到困难。

当我输入时,$ easy_install lxml我得到:

Searching for lxml
Reading http://pypi.python.org/simple/lxml/
Reading http://codespeak.net/lxml
Best match: lxml 2.3
Downloading http://lxml.de/files/lxml-2.3.tgz
Processing lxml-2.3.tgz
Running lxml-2.3/setup.py -q bdist_egg --dist-dir /tmp/easy_install-7UdQOZ/lxml-2.3/egg-dist-tmp-GacQGy
Building lxml version 2.3.
Building without Cython.
ERROR: /bin/sh: xslt-config: not found

** make sure the development packages of libxml2 and libxslt are installed **

Using build configuration of libxslt 
In file included from src/lxml/lxml.etree.c:227:0:
src/lxml/etree_defs.h:9:31: fatal error: libxml/xmlversion.h: No such file or directory
compilation terminated.

看来libxslt还是libxml2没有安装。我已经尝试按照http://www.techsww.com/tutorials/libraries/libxslt/installation/installing_libxslt_on_ubuntu_linux.phphttp://www.techsww.com/tutorials/libraries/libxml/installation/installing_installing_libxml_on_ubuntu_linux上的说明进行操作。 PHP没有成功。

如果我尝试wget ftp://xmlsoft.org/libxml2/libxml2-sources-2.6.27.tar.gz我会得到

<successful connection info>
==> SYST ... done.    ==> PWD ... done.
==> TYPE I ... done.  ==> CWD (1) /libxml2 ... done.
==> SIZE libxml2-sources-2.6.27.tar.gz ... done.
==> PASV ... done.    ==> RETR libxml2-sources-2.6.27.tar.gz ... 
No such file `libxml2-sources-2.6.27.tar.gz'.

如果我先尝试另一种,那我会做的,./configure --prefix=/usr/local/libxslt --with-libxml-prefix=/usr/local/libxml2最终会失败,并显示以下内容:

checking for libxml libraries >= 2.6.27... configure: error: Could not find libxml2 anywhere, check ftp://xmlsoft.org/.

我试过两个版本2.6.272.6.29libxml2没什么区别。

不遗余力,我已经成功完成了sudo apt-get install libxml2-dev,但这并没有改变。

Answers:


950

由于您使用的是Ubuntu,因此不必理会这些源代码包。只需使用apt-get安装这些开发包。

apt-get install libxml2-dev libxslt1-dev python-dev

但是,如果您对可能是旧版本的lxml感到满意,则可以尝试

apt-get install python-lxml

并完成它。:)


51
这个答案应该添加到lxml安装说明中:)谢谢+1
Boaz

43
跑步后,apt-get install libxml2-dev libxslt-dev您可以easy_install lxml
Bob Jansen 2012年

11
在最新的类似ubuntu的发行版中,您必须安装libxslt1-dev而不是libxslt-dev
Jose

21
至少在Ubuntu 14.04上,您还必须安装该软件包zlib1g-dev
Christian Berendt 2014年

3
在Ubuntu 16.04上也是zlib1g-dev必要的。没有这个我会出错/usr/bin/ld: cannot find -lz
贾巴

111

在lxml编译之前,我还必须安装lib32z1-dev(Ubuntu 13.04 x64)。

sudo apt-get install lib32z1-dev

或所有必需的包装在一起:

sudo apt-get install libxml2-dev libxslt-dev python-dev lib32z1-dev

9
+1。即使安装了所有其他提到的软件包,该软件包也是必需的。
Jayesh Bhoot

1
是的,我也在13.04上需要此
mwjackson 2013年

3
为什么它需要lib32包的标头?也许zlib1g-dev也可以工作?
Pepijn

1
在Ubuntu 13.04上需要zlib1g-dev
Zelo

6
在14.04 64位上也需要。
克里斯汀·恩·西古尔松

43

正如@Pepijn在ubuntu 13.04 x64上评论@Druska的答案一样,无需使用lib32z1-dev,zlib1g-dev就足够了:

sudo apt-get install libxml2-dev libxslt-dev python-dev zlib1g-dev

16

我使用Ubuntu 14.04在Vagrant中使用pip安装了lxml,并且遇到了同样的问题。即使安装了所有要求,我也一次又一次遇到相同的错误。事实证明,默认情况下,我的VM的内存很少。有了1024 MB,一切正常。

将此添加到您的VagrantFile中,lxml应该正确编译/安装:

config.vm.provider "virtualbox" do |vb|
  vb.memory = 1024
end

感谢sixhobbit的提示(请参阅:无法在Ubuntu 12.04上安装lxml)。


这对我有用。谢谢。它说编译失败了,状态为4,以防其他任何人使用。
Kurtis'7

这个答案与OP的问题无关
Corey Goldberg,

10

对于Ubuntu 14.04

sudo apt-get install python-lxml

为我工作。


7
好吧,这是个坏消息。如果他们已解决将停止获取意见的问题,我从这个问题中获得了1000多个代表...😊–
埃里克·威尔逊

9

步骤1

使用此命令安装最新的python更新。

sudo apt-get install python-dev

第2步

添加第一个依赖项libxml2版本2.7.0或更高版本

sudo apt-get install libxml2-dev

第三步

添加第二个依赖库libxslt版本1.1.23或更高版本

sudo apt-get install libxslt1-dev

第四步

首先安装pip软件包管理工具。并运行此命令。

pip install lxml

如果您有任何疑问,请点击这里


8

安装AKX提到的软件包后,我仍然遇到相同的问题。解决了

apt-get install python-dev

6

对于Ubuntu 12.04.3 LTS(精确的穿山甲),我必须这样做:

apt-get install libxml2-dev libxslt1-dev

(注意libxslt1-dev中的“ 1”)

然后我刚刚用pip / easy_install安装了lxml。


2

从Ubuntu 18.4(Bionic Beaver)开始,建议使用apt而不是apt-get,因为它具有更好的结构形式。

sudo apt install libxml2-dev libxslt1-dev python-dev

如果您对可能是旧版本的设备感到满意lxml,则可以尝试

sudo apt install python-lxml

1


由于@Simplans(https://stackoverflow.com/a/37759871/417747)的指针和主页,这里的许多答案都比较旧了。

什么对我有用(Ubuntu仿生):

sudo apt-get install python3-lxml  

(+ sudo apt-get install libxml2-dev libxslt1-dev我已经安装了它,但是不确定那是否仍然是必需的)


1
是的,关于一个老问题的老答案。我的意思是,当我问时,我正在使用Ubuntu 11!
埃里克·威尔逊

是的,我怀疑您是否还能再在这里提出要求(将其移至ubuntu等),但它仍在困扰着很多网络搜索。怀疑有人还在使用Ubuntu 11 :)。然后,旧的Linux版本和软件包不兼容,希望有一天能有所改善。
NSGaga-大部分时间都未激活,

0

首先安装Ubuntu的python-lxml软件包及其依赖项:

sudo apt-get install python-lxml

然后使用pip升级到适用于Python的lxml的最新版本:

pip install lxml

代码只回答不满意。添加一些说明
马诺斯斯尼古拉迪斯

虽然此答案可能是正确的,但请添加一些说明。赋予底层逻辑比提供代码更重要,因为它有助于OP和其他读者自己解决此问题和类似问题。
CodeMouse92 2015年

拒绝投票,因为没有新内容添加到已经有几个好的答案的问题中。
埃里克·威尔逊
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.