So installieren Sie lxml unter Ubuntu

442

Ich habe Probleme bei der Installation von lxml mit easy_install unter Ubuntu 11.

Wenn ich tippe, $ easy_install lxmlbekomme ich:

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.

Es scheint, dass libxsltoder libxml2nicht installiert ist. Ich habe versucht, den Anweisungen unter http://www.techsww.com/tutorials/libraries/libxslt/installation/installing_libxslt_on_ubuntu_linux.php und http://www.techsww.com/tutorials/libraries/libxml/installation/installing_libx_ zu folgen . PHP ohne Erfolg.

Wenn ich es versuche, wget ftp://xmlsoft.org/libxml2/libxml2-sources-2.6.27.tar.gzbekomme ich

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

Wenn ich zuerst den anderen probiere, komme ich zu ./configure --prefix=/usr/local/libxslt --with-libxml-prefix=/usr/local/libxml2und das wird irgendwann scheitern mit:

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

Ich habe beiden Versionen ausprobiert 2.6.27und 2.6.29das libxml2ohne Unterschied.

Ich habe es nicht geschafft sudo apt-get install libxml2-dev, nichts unversucht zu lassen, aber das ändert nichts.

Eric Wilson
quelle

Antworten:

950

Da Sie unter Ubuntu arbeiten, kümmern Sie sich nicht um diese Quellpakete. Installieren Sie diese Entwicklungspakete einfach mit apt-get.

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

Wenn Sie mit einer möglicherweise älteren Version von lxml insgesamt zufrieden sind, können Sie es versuchen

apt-get install python-lxml

und damit fertig sein. :) :)

AKX
quelle
51
Diese Antwort sollte zu lxml Installationsanweisungen hinzugefügt werden :) danke +1
Boaz
43
Nach dem Laufen können apt-get install libxml2-dev libxslt-devSie nureasy_install lxml
Bob Jansen
11
In den neuesten Ubuntu-ähnlichen Distributionen müssen Sie libxslt1-dev anstelle von libxslt-dev installieren
Jose A. Martín
21
Zumindest unter Ubuntu 14.04 müssen Sie das Paket auch installieren zlib1g-dev.
Christian Berendt
3
Unter Ubuntu 16.04 zlib1g-devist auch notwendig. Ohne das habe ich den Fehler bekommen /usr/bin/ld: cannot find -lz.
Jabba
111

Ich musste auch lib32z1-dev installieren, bevor lxml kompiliert werden konnte (Ubuntu 13.04 x64).

sudo apt-get install lib32z1-dev

Oder alle erforderlichen Pakete zusammen:

sudo apt-get install libxml2-dev libxslt-dev python-dev lib32z1-dev
Druska
quelle
9
+1. Dieses Paket wurde auch nach der Installation aller anderen genannten Pakete benötigt.
Jayesh Bhoot
1
yeh ich brauchte das auch am 13.04
mwjackson
3
Warum braucht es die Header eines lib32-Pakets? Vielleicht würde zlib1g-dev auch funktionieren?
Pepijn
1
zlib1g-dev wurde am Ubuntu 13.04
Zelo
6
Wird auch am 14.04 64 Bit benötigt.
Kristinn Örn Sigurðsson
43

Da @Pepijn die Antwort von @Druska unter Ubuntu 13.04 x64 kommentierte, muss lib32z1-dev nicht verwendet werden. Zlib1g-dev reicht aus:

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

Ich habe lxml mit pip in Vagrant unter Verwendung von Ubuntu 14.04 installiert und hatte das gleiche Problem. Obwohl alle Anforderungen installiert waren, bekam ich immer wieder den gleichen Fehler. Es stellte sich heraus, dass meine VM standardmäßig zu wenig Speicher hatte. Mit 1024 MB funktioniert alles einwandfrei.

Fügen Sie dies zu Ihrer VagrantFile hinzu und lxml sollte ordnungsgemäß kompiliert / installiert werden:

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

Vielen Dank an sixhobbit für den Hinweis (siehe: lxml kann unter Ubuntu 12.04 nicht installiert werden ).

Chris
quelle
Das hat bei mir funktioniert. Vielen Dank. Es hieß, die Kompilierung sei mit dem Status 4 fehlgeschlagen, falls dies jemand anderem hilft.
Kurtis
Diese Antwort hat nichts mit OPs Frage zu tun
Corey Goldberg
10

Für Ubuntu 14.04

sudo apt-get install python-lxml

arbeitete für mich.

Waten
quelle
7
Das sind schlechte Nachrichten. Ich habe über 1000 Wiederholungen aus dieser Frage gewonnen, wenn sie behoben haben, dass es keine Ansichten mehr bekommt ... 😊
Eric Wilson
9

Schritt 1

Installieren Sie die neuesten Python-Updates mit diesem Befehl.

sudo apt-get install python-dev

Schritt 2

Fügen Sie die erste Abhängigkeit libxml2 Version 2.7.0 oder höher hinzu

sudo apt-get install libxml2-dev

Schritt 3

Fügen Sie die zweite Abhängigkeit libxslt Version 1.1.23 oder höher hinzu

sudo apt-get install libxslt1-dev

Schritt 4

Installieren Sie zuerst das Pip- Paketverwaltungstool. und führen Sie diesen Befehl aus.

pip install lxml

Wenn Sie Zweifel haben, klicken Sie hier

Simplans
quelle
8

Nach der Installation der von AKX erwähnten Pakete hatte ich immer noch das gleiche Problem. Löste es mit

apt-get install python-dev
bcoughlan
quelle
6

Für Ubuntu 12.04.3 LTS (Precise Pangolin) musste ich Folgendes tun:

apt-get install libxml2-dev libxslt1-dev

(Beachten Sie die "1" in libxslt1-dev)

Dann habe ich gerade lxml mit pip / easy_install installiert.

Gonz
quelle
2

Ab Ubuntu 18.4 (Bionic Beaver) ist es ratsam, apt anstelle von apt-get zu verwenden, da es eine viel bessere strukturelle Form hat.

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

Wenn Sie mit einer möglicherweise älteren Version von lxmlinsgesamt zufrieden sind , können Sie es versuchen

sudo apt install python-lxml
Rarblack
quelle
1

Viele Antworten hier sind ziemlich alt,
dank des Zeigers von @Simplans ( https://stackoverflow.com/a/37759871/417747 ) und der Homepage ...

Was hat bei mir funktioniert (Ubuntu bionic):

sudo apt-get install python3-lxml  

(+ sudo apt-get install libxml2-dev libxslt1-devIch habe vorher installiert, bin mir aber nicht sicher, ob das noch erforderlich ist)

NSGaga-meistens-inaktiv
quelle
1
Ja, alte Antworten auf eine alte Frage. Ich meine, ich war auf Ubuntu 11, als ich gefragt habe!
Eric Wilson
Ja, ich bezweifle, dass Sie es hier überhaupt noch fragen können (würde auf Ubuntu usw. umgestellt werden), aber es ist immer noch eine Menge Web-Suche. Und bezweifle, dass noch jemand Ubuntu 11 verwendet :). Und dann, dass alte Linux-Versionen und Pakete nicht kompatibel sind, hoffen, dass sich das eines Tages verbessert.
NSGaga-meistens-inaktiv
0

Installieren Sie zuerst das Ubuntu- python-lxmlPaket und seine Abhängigkeiten:

sudo apt-get install python-lxml

Verwenden Sie dann pip, um auf die neueste Version von lxml für Python zu aktualisieren:

pip install lxml
Joseph
quelle
Nur Code-Antworten sind verpönt. Fügen Sie eine Erklärung hinzu
Manos Nikolaidis
Obwohl diese Antwort richtig sein mag, fügen Sie bitte eine Erklärung hinzu. Die Vermittlung der zugrunde liegenden Logik ist wichtiger als nur die Angabe des Codes, da dies dem OP und anderen Lesern hilft, dieses und ähnliche Probleme selbst zu beheben.
CodeMouse92
Downvoting, weil einer Frage, die bereits mehrere gute Antworten hat, nichts Neues hinzugefügt wird.
Eric Wilson