如何在Ubuntu上安装lxml

Eri*_*son 435 python ubuntu lxml libxml2 easy-install

我在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.
Run Code Online (Sandbox Code Playgroud)

似乎libxsltlibxml2没有安装.我已尝试按照http://www.techsww.com/tutorials/libraries/libxslt/installation/installing_libxslt_on_ubuntu_linux.phphttp://www.techsww.com/tutorials/libraries/libxml/installation/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'.
Run Code Online (Sandbox Code Playgroud)

如果我先尝试另一个,我会到达,./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/.
Run Code Online (Sandbox Code Playgroud)

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

不遗余力,我已成功完成sudo apt-get install libxml2-dev,但这没有任何改变.

AKX*_*AKX 940

由于您使用的是Ubuntu,请不要理会这些源包.只需使用apt-get安装这些开发包.

apt-get install libxml2-dev libxslt1-dev python-dev
Run Code Online (Sandbox Code Playgroud)

如果您对可能较旧的lxml版本感到满意,可以尝试一下

apt-get install python-lxml
Run Code Online (Sandbox Code Playgroud)

并完成它.:)

  • 这个答案应该添加到lxml安装说明:)感谢+1 (51认同)
  • 运行`apt-get install libxml2-dev libxslt-dev`之后你就可以`easy_install lxml` (43认同)
  • 至少在Ubuntu 14.04上你还必须安装包`zlib1g-dev`. (21认同)
  • 在最新的类似ubuntu的发行版中,你必须安装libxslt1-dev而不是libxslt-dev (11认同)
  • 在Ubuntu 16.04上也需要`zlib1g-dev`.没有这个我得到错误`/ usr/bin/ld:找不到-lz`. (3认同)

Dru*_*ska 111

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

sudo apt-get install lib32z1-dev
Run Code Online (Sandbox Code Playgroud)

或者所有必需的包裹在一起:

sudo apt-get install libxml2-dev libxslt-dev python-dev lib32z1-dev
Run Code Online (Sandbox Code Playgroud)

  • +1.即使安装了所有其他提到的软件包,也需要此软件包. (9认同)
  • 还需要14.04 64位. (6认同)
  • 为什么需要lib32包的*headers*?也许zlib1g-dev也会起作用? (3认同)

小智 43

正如@Pepijn评论@Druska的答案,在ubuntu 13.04 x64上,没有必要使用lib32z1-dev,zlib1g-dev就足够了:

sudo apt-get install libxml2-dev libxslt-dev python-dev zlib1g-dev
Run Code Online (Sandbox Code Playgroud)


Chr*_*ris 16

我在Vagrant中使用pip安装了lxml,使用Ubuntu 14.04并遇到了同样的问题.即使安装了所有要求,我也会一次又一次地得到同样的错误.原来,我的VM默认只有很少的内存.1024 MB一切正常.

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

config.vm.provider "virtualbox" do |vb|
  vb.memory = 1024
end
Run Code Online (Sandbox Code Playgroud)

感谢sixhobbit的提示(参见:无法在Ubuntu 12.04上安装lxml).


小智 10

对于Ubuntu 14.04

sudo apt-get install python-lxml

为我工作.

  • 那是坏消息.我已经从这个问题中获得了超过1000个代表,如果他们已经修复了它将停止获取意见...... (7认同)

Sim*_*ans 9

步骤1

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

sudo apt-get install python-dev

第2步

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

sudo apt-get install libxml2-dev

第3步

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

sudo apt-get install libxslt1-dev

第4步

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

pip install lxml

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


bco*_*lan 8

安装AKX提到的包后,我仍然遇到了同样的问题.解决了它

apt-get install python-dev
Run Code Online (Sandbox Code Playgroud)


gon*_*onz 6

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

apt-get install libxml2-dev libxslt1-dev
Run Code Online (Sandbox Code Playgroud)

(注意libxslt1-dev中的"1")

然后我用pip/easy_install安装了lxml.