Cómo instalar lxml en Ubuntu


442

Tengo dificultades para instalar lxml con easy_install en Ubuntu 11.

Cuando escribo $ easy_install lxmlme sale:

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.

Parece que libxslto libxml2no está instalado. He intentado seguir las instrucciones en http://www.techsww.com/tutorials/libraries/libxslt/installation/installing_libxslt_on_ubuntu_linux.php y http://www.techsww.com/tutorials/libraries/libxml/installation/installing_libxml_on_ubuntu_linux. PHP sin éxito.

Si lo intento wget ftp://xmlsoft.org/libxml2/libxml2-sources-2.6.27.tar.gzme sale

<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'.

Si intento el otro primero, llegaré ./configure --prefix=/usr/local/libxslt --with-libxml-prefix=/usr/local/libxml2y eso fallará eventualmente con:

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

He probado las dos versiones 2.6.27y 2.6.29de libxml2sin ninguna diferencia.

Sin dejar piedra sin mover, lo he hecho con éxito sudo apt-get install libxml2-dev, pero esto no cambia nada.

Respuestas:


950

Como estás en Ubuntu, no te molestes con esos paquetes fuente. Simplemente instale esos paquetes de desarrollo usando apt-get.

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

Sin embargo, si está satisfecho con una versión posiblemente anterior de lxml, puede intentar

apt-get install python-lxml

y terminemos con eso. :)


51
esta respuesta debe agregarse a las instrucciones de instalación de lxml :) gracias +1
Boaz

43
Después de correr apt-get install libxml2-dev libxslt-devpuedes simplementeeasy_install lxml
Bob Jansen

11
en las últimas distribuciones similares a ubuntu, debe instalar libxslt1-dev en lugar de libxslt-dev
Jose A. Martín

21
Al menos en Ubuntu 14.04 también debe instalar el paquete zlib1g-dev.
Christian Berendt

3
En Ubuntu 16.04 también zlib1g-deves necesario. Sin esto obtuve el error /usr/bin/ld: cannot find -lz.
Jabba

111

También tuve que instalar lib32z1-dev antes de que lxml se compilara (Ubuntu 13.04 x64).

sudo apt-get install lib32z1-dev

O todos los paquetes requeridos juntos:

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

99
+1. Este paquete fue necesario incluso después de instalar todos los demás paquetes mencionados.
Jayesh Bhoot

1
sí, también necesitaba esto el 13.04
mwjackson

3
¿Por qué necesita los encabezados de un paquete lib32? ¿Quizás zlib1g-dev también funcionaría?
Pepijn

1
Se necesitaba zlib1g-dev en ubuntu 13.04
Zelo

66
También se necesita en 14.04 64 bit.
Kristinn Örn Sigurðsson

43

Como @Pepijn comentó en la respuesta de @Druska, en ubuntu 13.04 x64, no hay necesidad de usar lib32z1-dev, zlib1g-dev es suficiente:

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

16

Instalé lxml con pip en Vagrant, usando Ubuntu 14.04 y tuve el mismo problema. Aunque todos los requisitos estaban instalados, recibí el mismo error una y otra vez. Resultó que mi VM tenía poca memoria por defecto. Con 1024 MB todo funciona bien.

Agregue esto a su VagrantFile y lxml debe compilar / instalar correctamente:

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

Gracias a sixhobbit por la pista (ver: no se puede instalar lxml en Ubuntu 12.04 ).


Esto funcionó para mí. Gracias. Dijo que la compilación falló con un estado de 4, en caso de que ayude a alguien más.
Kurtis

esta respuesta no tiene nada que ver con la pregunta de OP
Corey Goldberg

10

Para Ubuntu 14.04

sudo apt-get install python-lxml

trabajó para mi.


77
Bueno, eso son malas noticias. He ganado más de 1000 repeticiones de esta pregunta, si han solucionado que dejará de obtener vistas ...
Eric

9

Paso 1

Instale las últimas actualizaciones de Python con este comando.

sudo apt-get install python-dev

Paso 2

Agregue la primera dependencia libxml2 versión 2.7.0 o posterior

sudo apt-get install libxml2-dev

Paso 3

Agregue la segunda dependencia libxslt versión 1.1.23 o posterior

sudo apt-get install libxslt1-dev

Paso 4

Instale la herramienta de gestión de paquetes pip primero. y ejecuta este comando.

pip install lxml

Si tiene alguna duda haga clic aquí


8

Después de instalar los paquetes mencionados por AKX, todavía tenía el mismo problema. Resuelto con

apt-get install python-dev

6

Para Ubuntu 12.04.3 LTS (Precise Pangolin) tuve que hacer:

apt-get install libxml2-dev libxslt1-dev

(Tenga en cuenta el "1" en libxslt1-dev)

Luego acabo de instalar lxml con pip / easy_install.


2

Desde Ubuntu 18.4 (Bionic Beaver) es aconsejable usar apt en lugar de apt-get ya que tiene una forma estructural mucho mejor.

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

Sin embargo, si está satisfecho con una versión posiblemente más antigua de lxml, puede intentar

sudo apt install python-lxml

1

Muchas respuestas aquí son bastante antiguas,
gracias al puntero de @Simplans ( https://stackoverflow.com/a/37759871/417747 ) y la página de inicio ...

Lo que funcionó para mí (Ubuntu bionic):

sudo apt-get install python3-lxml  

(+ sudo apt-get install libxml2-dev libxslt1-devLo instalé antes, pero aún no estoy seguro si ese es el requisito)


1
Sí, viejas respuestas a una vieja pregunta. Quiero decir, ¡estaba en Ubuntu 11 cuando pregunté!
Eric Wilson

sí, dudo que incluso pueda preguntarlo aquí más (se trasladaría a ubuntu, etc.), pero sigue atrayendo muchas búsquedas web. Y dudo que alguien siga usando Ubuntu 11 :). Y luego que las viejas versiones de Linux y los paquetes no sean compatibles, espero que mejore algún día.
NSGaga-mayoría-inactivo

0

Primero instale el python-lxmlpaquete de Ubuntu y sus dependencias:

sudo apt-get install python-lxml

Luego, use pippara actualizar a la última versión de lxml para Python:

pip install lxml

código solo las respuestas están mal vistas. Agregue alguna explicación
Manos Nikolaidis

Si bien esta respuesta puede ser correcta, agregue alguna explicación. Impartir la lógica subyacente es más importante que simplemente dar el código, porque ayuda al OP y a otros lectores a solucionar este problema y otros similares.
CodeMouse92

Votación negativa porque no se agrega nada nuevo a una pregunta que ya tiene varias respuestas buenas.
Eric Wilson
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.