Как установить lxml в Ubuntu

442

У меня проблемы с установкой lxml с easy_install на Ubuntu 11.

Когда я печатаю, $ easy_install lxmlя получаю:

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.

Кажется, что libxsltили libxml2не установлен. Я попытался следовать инструкциям на http://www.techsww.com/tutorials/libraries/libxslt/installation/install_libxslt_on_ubuntu_linux.php и http://www.techsww.com/tutorials/libraries/libxml/installation/install_libxnt_lin_u. PHP без успеха.

Если я попытаюсь, wget ftp://xmlsoft.org/libxml2/libxml2-sources-2.6.27.tar.gzя получу

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

Если я попробую другой сначала, я доберусь до ./configure --prefix=/usr/local/libxslt --with-libxml-prefix=/usr/local/libxml2этого, и в конечном итоге он потерпит неудачу с:

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

Я пробовал обе версии 2.6.27и 2.6.29в libxml2без разницы.

Не оставив камня на камне, я успешно справился sudo apt-get install libxml2-dev, но это ничего не меняет.

Эрик Уилсон
источник

Ответы:

950

Поскольку вы работаете в Ubuntu, не беспокойтесь об этих исходных пакетах. Просто установите эти пакеты разработки, используя apt-get.

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

Если вы довольны возможно более старой версией lxml, попробуйте

apt-get install python-lxml

и покончим с этим. :)

AKX
источник
51
этот ответ должен быть добавлен в инструкции по установке lxml :) спасибо +1
Boaz
43
После запуска apt-get install libxml2-dev libxslt-devвы можете простоeasy_install lxml
Боб Янсен
11
в последних Ubuntu-подобных дистрибутивах вы должны установить libxslt1-dev вместо libxslt-dev
Хосе А. Мартин
21
По крайней мере, в Ubuntu 14.04 вы также должны установить пакет zlib1g-dev.
Кристиан Берендт
3
На Ubuntu 16.04 тоже zlib1g-devнужен. Без этого я получил ошибку /usr/bin/ld: cannot find -lz.
Джабба
111

Мне также пришлось установить lib32z1-dev до того, как lxml скомпилируется (Ubuntu 13.04 x64).

sudo apt-get install lib32z1-dev

Или все необходимые пакеты вместе:

sudo apt-get install libxml2-dev libxslt-dev python-dev lib32z1-dev
Druska
источник
9
+1. Этот пакет был необходим даже после установки всех других упомянутых пакетов.
Джаеш Бхут
1
да, мне это тоже нужно было 13.04
mwjackson
3
Зачем нужны заголовки пакета lib32? Может быть, zlib1g-dev тоже подойдет?
Пепейн
1
zlib1g-dev был необходим в Ubuntu 13.04
Zelo
6
Также необходимо на 14.04 64 бит.
Кристинн Орн Сигурдссон,
43

Как @Pepijn прокомментировал ответ @Druska, в Ubuntu 13.04 x64 нет необходимости использовать lib32z1-dev, достаточно zlib1g-dev:

sudo apt-get install libxml2-dev libxslt-dev python-dev zlib1g-dev
JimmyYe
источник
16

Я установил lxml с pip в Vagrant, используя Ubuntu 14.04, и у меня возникла та же проблема. Несмотря на то, что все требования были установлены, я получал одну и ту же ошибку снова и снова. Оказалось, у моей ВМ было мало памяти по умолчанию. С 1024 МБ все работает отлично.

Добавьте это к вашему VagrantFile, и lxml должен правильно скомпилировать / установить:

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

Спасибо Sixhobbit за подсказку (см .: не могу установить lxml в Ubuntu 12.04 ).

Крис
источник
Это сработало для меня. Спасибо. Он сказал, что компиляция не удалась со статусом 4, в случае, если это помогает кому-либо еще.
Куртис
этот ответ не имеет никакого отношения к вопросу ОП
Кори Голдберг
10

Для Ubuntu 14.04

sudo apt-get install python-lxml

работал на меня.

брод
источник
7
Ну, это плохие новости. Я получил более 1000 повторений из этого вопроса, если они исправят то, что он перестанет получать представления ... 😊
Эрик Уилсон
9

Шаг 1

Установите последние обновления Python с помощью этой команды.

sudo apt-get install python-dev

Шаг 2

Добавьте первую зависимость libxml2 версии 2.7.0 или новее

sudo apt-get install libxml2-dev

Шаг 3

Добавьте вторую зависимость libxslt версии 1.1.23 или новее

sudo apt-get install libxslt1-dev

Шаг 4

Сначала установите инструмент управления пакетами pip . и запустите эту команду.

pip install lxml

Если у вас есть какие-либо сомнения, нажмите здесь

Simplans
источник
8

После установки пакетов, упомянутых AKX, у меня осталась та же проблема. Решил это с

apt-get install python-dev
bcoughlan
источник
6

Для Ubuntu 12.04.3 LTS (Precise Pangolin) мне пришлось сделать:

apt-get install libxml2-dev libxslt1-dev

(Обратите внимание на «1» в libxslt1-dev)

Тогда я только что установил lxml с помощью pip / easy_install.

Gonz
источник
2

В Ubuntu 18.4 (Bionic Beaver) рекомендуется использовать apt вместо apt-get, так как он имеет гораздо лучшую структурную форму.

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

Если вы довольны возможно более старой версией lxml, вы можете попробовать

sudo apt install python-lxml
Rarblack
источник
1

Многие ответы здесь довольно старые,
благодаря указателю из @Simplans ( https://stackoverflow.com/a/37759871/417747 ) и домашней странице ...

Что сработало для меня (Ubuntu Bionic):

sudo apt-get install python3-lxml  

(+ sudo apt-get install libxml2-dev libxslt1-devЯ установил перед этим, но не уверен, что это требование до сих пор)

NSGaga-в основном неактивный
источник
1
Да, старые ответы на старый вопрос. Я имею в виду, я был на Ubuntu 11, когда я спросил!
Эрик Уилсон,
да, я сомневаюсь, что вы даже сможете спросить об этом здесь больше (будут перенесены в Ubuntu и т. д.), но это все еще захватывает множество веб-поиска. И сомневаюсь, что кто-то все еще использует Ubuntu 11 :). А затем, что старые версии Linux и несовместимости пакетов, надеюсь, что однажды улучшится.
NSGaga - в основном неактивный
0

Сначала установите python-lxmlпакет Ubuntu и его зависимости:

sudo apt-get install python-lxml

Затем используйте pipдля обновления до последней версии lxml для Python:

pip install lxml
Джозеф
источник
Ответы только по коду не одобряются. Добавить объяснение
Манос Николаидис
Хотя этот ответ может быть правильным, пожалуйста, добавьте некоторые пояснения. Передача базовой логики важнее, чем просто предоставление кода, потому что это помогает ОП и другим читателям самим решить эту и подобные проблемы.
CodeMouse92,
Даунтинг, потому что ничего нового не добавлено к вопросу, на который уже есть несколько хороших ответов.
Эрик Уилсон