Comment installer lxml sur Ubuntu

442

J'ai du mal à installer lxml avec easy_install sur Ubuntu 11.

Quand je tape, $ easy_install lxmlje reçois:

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.

Il semble que libxsltou libxml2n'est pas installé. J'ai essayé de suivre les instructions sur http://www.techsww.com/tutorials/libraries/libxslt/installation/installing_libxslt_on_ubuntu_linux.php et http://www.techsww.com/tutorials/libraries/libxml/installation/installing_libxml_on_ubuntu_lin. php sans succès.

Si j'essaye wget ftp://xmlsoft.org/libxml2/libxml2-sources-2.6.27.tar.gzj'obtiens

<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 j'essaye l'autre d'abord, j'y arriverai ./configure --prefix=/usr/local/libxslt --with-libxml-prefix=/usr/local/libxml2et cela échouera finalement avec:

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

J'ai essayé les deux versions 2.6.27et 2.6.29de libxml2sans différence.

Ne laissant aucune pierre non retournée, j'ai réussi sudo apt-get install libxml2-dev, mais cela ne change rien.

Eric Wilson
la source

Réponses:

950

Puisque vous êtes sur Ubuntu, ne vous embêtez pas avec ces paquets sources. Installez simplement ces packages de développement en utilisant apt-get.

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

Si vous êtes satisfait d'une version éventuellement plus ancienne de lxml, vous pouvez essayer

apt-get install python-lxml

et en finir avec ça. :)

AKX
la source
51
cette réponse doit être ajoutée aux instructions d'installation de lxml :) merci +1
Boaz
43
Après avoir couru, apt-get install libxml2-dev libxslt-devvous pouvez simplementeasy_install lxml
Bob Jansen
11
dans les dernières distributions de type ubuntu, vous devez installer libxslt1-dev au lieu de libxslt-dev
Jose A. Martín
21
Au moins sur Ubuntu 14.04, vous devez également installer le package zlib1g-dev.
Christian Berendt
3
Sur Ubuntu 16.04 zlib1g-devest également nécessaire. Sans cela, j'ai eu l'erreur /usr/bin/ld: cannot find -lz.
Jabba
111

J'ai également dû installer lib32z1-dev avant que lxml ne compile (Ubuntu 13.04 x64).

sudo apt-get install lib32z1-dev

Ou tous les packages requis ensemble:

sudo apt-get install libxml2-dev libxslt-dev python-dev lib32z1-dev
Druska
la source
9
+1. Ce package était requis même après l'installation de tous les autres packages mentionnés.
Jayesh Bhoot
1
yeh j'ai aussi eu besoin de ça le 13.04
mwjackson
3
Pourquoi a-t-il besoin des en- têtes d'un paquet lib32? Peut-être que zlib1g-dev fonctionnerait également?
Pepijn
1
zlib1g-dev était nécessaire sur ubuntu 13.04
Zelo
6
Également nécessaire sur 14.04 64 bits.
Kristinn Örn Sigurðsson
43

Comme @Pepijn a commenté la réponse de @Druska, sur ubuntu 13.04 x64, il n'est pas nécessaire d'utiliser lib32z1-dev, zlib1g-dev suffit:

sudo apt-get install libxml2-dev libxslt-dev python-dev zlib1g-dev
JimmyYe
la source
16

J'ai installé lxml avec pip dans Vagrant, en utilisant Ubuntu 14.04 et j'ai eu le même problème. Même si toutes les exigences étaient installées, j'ai toujours eu la même erreur. Il s'est avéré que ma machine virtuelle avait peu de mémoire par défaut. Avec 1024 Mo, tout fonctionne bien.

Ajoutez ceci à votre VagrantFile et lxml devrait correctement compiler / installer:

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

Merci à sixhobbit pour l'astuce (voir: impossible d'installer lxml sur Ubuntu 12.04 ).

Chris
la source
Cela a fonctionné pour moi. Merci. Il a déclaré que la compilation avait échoué avec un statut de 4, au cas où cela aiderait quelqu'un d'autre.
Kurtis
cette réponse n'a rien à voir avec la question d'OP
Corey Goldberg
10

Pour Ubuntu 14.04

sudo apt-get install python-lxml

travaillé pour moi.

Patauger
la source
7
Eh bien, c'est une mauvaise nouvelle. J'ai gagné plus de 1000 répétitions de cette question, s'ils ont corrigé que cela cesserait d'obtenir des vues ...
Eric
9

Étape 1

Installez les dernières mises à jour de python à l'aide de cette commande.

sudo apt-get install python-dev

Étape 2

Ajouter la première dépendance libxml2 version 2.7.0 ou ultérieure

sudo apt-get install libxml2-dev

Étape 3

Ajouter une deuxième dépendance libxslt version 1.1.23 ou ultérieure

sudo apt-get install libxslt1-dev

Étape 4

Installez d' abord l'outil de gestion des packages pip . et exécutez cette commande.

pip install lxml

En cas de doute, cliquez ici

Simplans
la source
8

Après avoir installé les packages mentionnés par AKX, j'ai toujours eu le même problème. Résolu avec

apt-get install python-dev
bcoughlan
la source
6

Pour Ubuntu 12.04.3 LTS (Precise Pangolin), je devais faire:

apt-get install libxml2-dev libxslt1-dev

(Notez le "1" dans libxslt1-dev)

Ensuite, je viens d'installer lxml avec pip / easy_install.

gonz
la source
2

Depuis Ubuntu 18.4 (Bionic Beaver), il est conseillé d'utiliser apt au lieu d'apt-get car il a une bien meilleure forme structurelle.

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

Si vous êtes satisfait d'une version plus ancienne lxml, vous pouvez essayer

sudo apt install python-lxml
Rarblack
la source
1

De nombreuses réponses ici sont assez anciennes,
grâce au pointeur de @Simplans ( https://stackoverflow.com/a/37759871/417747 ) et à la page d'accueil ...

Ce qui a fonctionné pour moi (Ubuntu bionic):

sudo apt-get install python3-lxml  

(+ sudo apt-get install libxml2-dev libxslt1-devJ'ai installé avant, mais je ne sais pas si c'est toujours l'exigence)

NSGaga-principalement-inactif
la source
1
Ouais, vieilles réponses sur une vieille question. Je veux dire, j'étais sur Ubuntu 11 quand j'ai demandé!
Eric Wilson
oui, je doute que vous seriez même en mesure de le demander ici (serait déplacé vers ubuntu, etc.), mais cela continue de faire beaucoup de recherches sur le Web. Et je doute que quelqu'un utilise toujours Ubuntu 11 :). Et puis que les anciennes versions de linux et les packages sont incompatibles, j'espère que cela s'améliorera un jour.
NSGaga, principalement inactif
0

Installez d'abord le python-lxmlpaquet d'Ubuntu et ses dépendances:

sudo apt-get install python-lxml

Ensuite, utilisez pippour mettre à niveau vers la dernière version de lxml pour Python:

pip install lxml
Joseph
la source
seules les réponses codées sont désapprouvées. Ajouter quelques explications
Manos Nikolaidis
Bien que cette réponse soit correcte, veuillez ajouter quelques explications. Il est plus important d'impartir la logique sous-jacente que de simplement donner le code, car cela aide l'OP et d'autres lecteurs à résoudre eux-mêmes ce problème et des problèmes similaires.
CodeMouse92 du
Downvoting car rien de nouveau n'est ajouté à une question qui a déjà plusieurs bonnes réponses.
Eric Wilson