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.