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.

Eric Wilson
fuente

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. :)

AKX
fuente
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
Druska
fuente
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
JimmyYe
fuente
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 ).

Chris
fuente
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.

Vadear
fuente
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í

Simplans
fuente
8

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

apt-get install python-dev
bcoughlan
fuente
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.

gonz
fuente
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
Rarblack
fuente
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)

NSGaga-mayormente-inactivo
fuente
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
José
fuente
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