Как установить 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

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


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

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

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

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


8

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

apt-get install python-dev

6

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

apt-get install libxml2-dev libxslt1-dev

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

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


2

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

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

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

sudo apt install python-lxml

1

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

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

sudo apt-get install python3-lxml  

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


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,

Даунтинг, потому что ничего нового не добавлено к вопросу, на который уже есть несколько хороших ответов.
— Эрик Уилсон
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.