Come installare lxml su Ubuntu


442

Ho difficoltà a installare lxml con easy_install su Ubuntu 11.

Quando scrivo $ easy_install lxmlottengo:

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.

Sembra che libxslto libxml2non è installato. Ho provato a seguire le istruzioni su http://www.techsww.com/tutorials/libraries/libxslt/installation/installing_libxslt_on_ubuntu_linux.php e http://www.techsww.com/tutorials/libraries/libxml/installation/installing_libxml_on_ubuntu_linux. php senza successo.

Se provo wget ftp://xmlsoft.org/libxml2/libxml2-sources-2.6.27.tar.gzottengo

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

Se provo prima l'altro, ci arrivo ./configure --prefix=/usr/local/libxslt --with-libxml-prefix=/usr/local/libxml2e alla fine fallirà con:

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

Ho provato entrambe le versioni 2.6.27e 2.6.29dei libxml2senza alcuna differenza.

Non lasciando nulla di intentato, l'ho fatto con successo sudo apt-get install libxml2-dev, ma questo non cambia nulla.

Risposte:


950

Dato che sei su Ubuntu, non preoccuparti di quei pacchetti sorgente. Basta installare quei pacchetti di sviluppo usando apt-get.

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

Se sei soddisfatto di una versione forse più vecchia di lxml del tutto, però, puoi provare

apt-get install python-lxml

ed essere fatto con esso. :)


51
questa risposta dovrebbe essere aggiunta alle istruzioni di installazione di lxml :) grazie +1
Boaz

43
Dopo aver corso apt-get install libxml2-dev libxslt-devpuoi semplicementeeasy_install lxml
Bob Jansen il

11
nelle ultime distribuzioni simili a Ubuntu, devi installare libxslt1-dev invece di libxslt-dev
Jose A. Martín,

21
Almeno su Ubuntu 14.04 devi anche installare il pacchetto zlib1g-dev.
Christian Berendt,

3
Anche su Ubuntu 16.04 zlib1g-devè necessario. Senza questo ho ricevuto l'errore /usr/bin/ld: cannot find -lz.
Jabba,

111

Prima di compilare lxml (Ubuntu 13.04 x64), dovevo anche installare lib32z1-dev.

sudo apt-get install lib32z1-dev

O tutti i pacchetti richiesti insieme:

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

9
+1. Questo pacchetto è stato richiesto anche dopo l'installazione di tutti gli altri pacchetti citati.
Jayesh Bhoot,

1
anche io avevo bisogno di questo il 13.04
mwjackson il

3
Perché ha bisogno delle intestazioni di un pacchetto lib32? Forse anche zlib1g-dev avrebbe funzionato?
Pepijn,

1
zlib1g-dev era necessario su Ubuntu 13.04
Zelo

6
Necessario anche su 14.04 64 bit.
Kristinn Örn Sigurðsson,

43

Come ha commentato @Pepijn sulla risposta di @Druska, su Ubuntu 13.04 x64, non è necessario utilizzare lib32z1-dev, zlib1g-dev è sufficiente:

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

16

Ho installato lxml con pip in Vagrant, usando Ubuntu 14.04 e ho avuto lo stesso problema. Anche se tutti i requisiti sono stati installati, ho riscontrato lo stesso errore ancora e ancora. Alla fine, la mia VM aveva poca memoria per impostazione predefinita. Con 1024 MB tutto funziona bene.

Aggiungi questo al tuo VagrantFile e lxml dovrebbe compilare / installare correttamente:

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

Grazie a sixhobbit per il suggerimento (vedi: impossibile installare lxml su Ubuntu 12.04 ).


Questo ha funzionato per me. Grazie. Ha detto che la compilazione non è riuscita con uno stato di 4, nel caso in cui ciò aiuti qualcun altro.
Kurtis,

questa risposta non ha nulla a che fare con la domanda di OP
Corey Goldberg,

10

Per Ubuntu 14.04

sudo apt-get install python-lxml

ha funzionato per me.


7
Bene, questa è una brutta notizia. Ho guadagnato più di 1000 rappresentanti da questa domanda, se hanno risolto che smetterà di ottenere visualizzazioni ... 😊
Eric Wilson

9

Passo 1

Installa gli ultimi aggiornamenti di Python usando questo comando.

sudo apt-get install python-dev

Passo 2

Aggiungi la prima dipendenza libxml2 versione 2.7.0 o successive

sudo apt-get install libxml2-dev

Passaggio 3

Aggiungi la seconda dipendenza libxslt versione 1.1.23 o successive

sudo apt-get install libxslt1-dev

Passaggio 4

Installare prima lo strumento di gestione dei pacchetti pip . ed esegui questo comando.

pip install lxml

In caso di dubbi, fare clic qui


8

Dopo aver installato i pacchetti menzionati da AKX ho avuto ancora lo stesso problema. Risolto con

apt-get install python-dev

6

Per Ubuntu 12.04.3 LTS (Precise Pangolin) ho dovuto fare:

apt-get install libxml2-dev libxslt1-dev

(Nota "1" in libxslt1-dev)

Quindi ho appena installato lxml con pip / easy_install.


2

Da Ubuntu 18.4 (Bionic Beaver) è consigliabile usare apt invece di apt-get poiché ha una forma strutturale molto migliore.

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

Se sei soddisfatto di una versione forse più vecchia del lxmltutto, però, puoi provare

sudo apt install python-lxml

1

Molte risposte qui sono piuttosto vecchie,
grazie al puntatore di @Simplans ( https://stackoverflow.com/a/37759871/417747 ) e alla home page ...

Cosa ha funzionato per me (Ubuntu bionic):

sudo apt-get install python3-lxml  

(+ sudo apt-get install libxml2-dev libxslt1-devHo installato prima di esso, ma non sono sicuro se questo è ancora il requisito)


1
Sì, vecchie risposte su una vecchia domanda. Voglio dire, ero su Ubuntu 11 quando ho chiesto!
Eric Wilson,

sì, dubito che potresti anche chiedere di più qui (verrebbe spostato su Ubuntu ecc.) ma sta ancora ostacolando molta ricerca sul web. E dubiti che qualcuno stia ancora usando Ubuntu 11 :). E poi quelle vecchie versioni di Linux e i pacchetti non compatibili, spero che un giorno migliori.
NSGaga, quasi inattivo il

0

Innanzitutto installa il python-lxmlpacchetto Ubuntu e le sue dipendenze:

sudo apt-get install python-lxml

Quindi utilizzare pipper aggiornare all'ultima versione di lxml per Python:

pip install lxml

codice solo le risposte sono disapprovate. Aggiungi una spiegazione
Manos Nikolaidis,

Sebbene questa risposta possa essere corretta, si prega di aggiungere alcune spiegazioni. Impartire la logica di base è più importante che fornire semplicemente il codice, perché aiuta l'OP e altri lettori a risolvere da soli questo e simili problemi.
CodeMouse92

Downvoting perché non viene aggiunto nulla di nuovo a una domanda che ha già diverse risposte valide.
Eric Wilson,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.