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.