Jak zainstalować lxml na Ubuntu


442

Mam problem z instalacją lxml z easy_install na Ubuntu 11.

Kiedy piszę $ easy_install lxml, otrzymuję:

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.

Wydaje się, że libxsltalbo libxml2nie jest zainstalowany. Próbowałem postępować zgodnie z instrukcjami na http://www.techsww.com/tutorials/libraries/libxslt/installation/installing_libxslt_on_ubuntu_linux.php i http://www.techsww.com/tutorials/libraries/libxml/installation/installing_libxml_on_ubuntu_linux. php bez powodzenia.

Jeśli spróbuję wget ftp://xmlsoft.org/libxml2/libxml2-sources-2.6.27.tar.gz, dostanę

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

Jeśli spróbuję najpierw drugiego, dostanę się ./configure --prefix=/usr/local/libxslt --with-libxml-prefix=/usr/local/libxml2i ostatecznie to się nie powiedzie z:

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

Próbowałem obie wersje 2.6.27i 2.6.29od libxml2bez różnicy.

Nie pozostawiając żadnego kamienia odwróconego, udało mi się sudo apt-get install libxml2-dev, ale to nic nie zmienia.

Odpowiedzi:


950

Ponieważ korzystasz z Ubuntu, nie przejmuj się tymi pakietami źródłowymi. Wystarczy zainstalować te pakiety programistyczne za pomocą apt-get.

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

Jeśli jednak jesteś zadowolony z możliwie starszej wersji lxml, możesz spróbować

apt-get install python-lxml

i skończyć z tym. :)


51
tę odpowiedź należy dodać do instrukcji instalacji lxml :) dzięki +1
Boaz

43
Po uruchomieniu apt-get install libxml2-dev libxslt-devmożesz po prostueasy_install lxml
Bob Jansen

11
w najnowszych dystrybucjach podobnych do Ubuntu, musisz zainstalować libxslt1-dev zamiast libxslt-dev
Jose A. Martín

21
Przynajmniej na Ubuntu 14.04 musisz także zainstalować pakiet zlib1g-dev.
Christian Berendt,

3
Na Ubuntu 16.04 również zlib1g-devjest konieczne. Bez tego mam błąd /usr/bin/ld: cannot find -lz.
Jabba,

111

Musiałem także zainstalować lib32z1-dev, zanim skompiluje się lxml (Ubuntu 13.04 x64).

sudo apt-get install lib32z1-dev

Lub wszystkie wymagane pakiety razem:

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

9
+1. Ten pakiet był wymagany nawet po zainstalowaniu wszystkich innych wymienionych pakietów.
Jayesh Bhoot

1
tak, też potrzebowałem tego w dniu 13.04
mwjackson

3
Dlaczego potrzebuje nagłówków pakietu lib32? Może zlib1g-dev też by działał?
Pepijn

1
zlib1g-dev był potrzebny na Ubuntu 13.04
Zelo

6
Potrzebny również w wersji 14.04 64-bitowej.
Kristinn Örn Sigurðsson

43

Jak @Pepijn skomentował odpowiedź @Druska, w Ubuntu 13.04 x64 nie ma potrzeby używania lib32z1-dev, wystarczy zlib1g-dev:

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

16

Zainstalowałem lxml z pipem w Vagrant, używając Ubuntu 14.04 i miałem ten sam problem. Mimo że wszystkie wymagania były zainstalowane, ciągle pojawiał się ten sam błąd. Okazało się, że moja maszyna wirtualna domyślnie miała mało pamięci. Przy 1024 MB wszystko działa dobrze.

Dodaj to do pliku VagrantFile, a lxml powinien poprawnie skompilować / zainstalować:

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

Dzięki sixhobbit za podpowiedź (patrz: nie można zainstalować lxml na Ubuntu 12.04 ).


To zadziałało dla mnie. Dzięki. Powiedział, że kompilacja zakończyła się niepowodzeniem ze statusem 4, na wypadek, gdyby to pomogło każdemu innemu.
Kurtis,

ta odpowiedź nie ma nic wspólnego z pytaniem OP
Corey Goldberg

10

Dla Ubuntu 14.04

sudo apt-get install python-lxml

pracował dla mnie.


7
To złe wieści. Z tego pytania zyskałem ponad 1000 powtórzeń, jeśli naprawili, że przestanie się wyświetlać ... 😊
Eric Wilson

9

Krok 1

Zainstaluj najnowsze aktualizacje Pythona za pomocą tego polecenia.

sudo apt-get install python-dev

Krok 2

Dodaj pierwszą zależność libxml2 w wersji 2.7.0 lub nowszej

sudo apt-get install libxml2-dev

Krok 3

Dodaj drugą zależność libxslt w wersji 1.1.23 lub nowszej

sudo apt-get install libxslt1-dev

Krok 4

Najpierw zainstaluj narzędzie do zarządzania pakietami pip . i uruchom to polecenie.

pip install lxml

W razie wątpliwości kliknij tutaj


8

Po zainstalowaniu pakietów wspomnianych przez AKX nadal miałem ten sam problem. Rozwiązałem to za pomocą

apt-get install python-dev

6

W przypadku Ubuntu 12.04.3 LTS (Precise Pangolin) musiałem zrobić:

apt-get install libxml2-dev libxslt1-dev

(Uwaga „1” w libxslt1-dev)

Potem właśnie zainstalowałem lxml z pip / easy_install.


2

Od Ubuntu 18.4 (Bionic Beaver) zaleca się stosowanie apt zamiast apt-get, ponieważ ma on znacznie lepszą formę strukturalną.

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

Jeśli jednak jesteś zadowolony z możliwie starszej wersji lxml, możesz spróbować

sudo apt install python-lxml

1

Wiele odpowiedzi tutaj jest raczej starych,
dzięki wskaźnikowi z @Simplans ( https://stackoverflow.com/a/37759871/417747 ) i głównej ...

Co dla mnie zadziałało (Ubuntu bionic):

sudo apt-get install python3-lxml  

(+ sudo apt-get install libxml2-dev libxslt1-devZainstalowałem wcześniej, ale nie jestem pewien, czy nadal jest to wymóg)


1
Tak, stare odpowiedzi na stare pytanie. To znaczy, byłem na Ubuntu 11, kiedy zapytałem!
Eric Wilson

tak, wątpię, czy byłbyś w stanie zapytać o to więcej tutaj (zostałby przeniesiony do Ubuntu itp.), ale wciąż wiele z nich szuka. I wątpię, czy ktoś nadal używa Ubuntu 11 :). A potem te stare wersje linuksowe i pakiety niezgodne, mam nadzieję, że któregoś dnia poprawi się.
NSGaga-głównie-nieaktywny

0

Najpierw zainstaluj python-lxmlpakiet Ubuntu i jego zależności:

sudo apt-get install python-lxml

Następnie użyj pipdo aktualizacji do najnowszej wersji lxml dla Python:

pip install lxml

tylko odpowiedzi na kod są niezadowolone. Dodaj wyjaśnienie
Manos Nikolaidis

Chociaż ta odpowiedź może być poprawna, dodaj wyjaśnienie. Nadanie podstawowej logice jest ważniejsze niż podanie kodu, ponieważ pomaga OP i innym czytelnikom samodzielnie naprawić ten i podobne problemy.
CodeMouse92,

Oddawanie głosu, ponieważ nic nowego nie jest dodawane do pytania, które ma już kilka dobrych odpowiedzi.
Eric Wilson
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.