Як встановити 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/installing_libxslt_on_ubuntu_linux.php та http://www.techsww.com/tutorials/libraries/libxml/installation/installing_libxml_on_ubuntu_linux. 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. Цей пакет був необхідний навіть після встановлення всіх інших згаданих пакетів.
Jayesh Bhoot

1
Ви також потребували цього 13.04
mwjackson

3
Для чого потрібні заголовки пакету lib32? Можливо, zlib1g-dev також спрацював би?
Pepijn

1
zlib1g-dev потрібен був на ubuntu 13.04
Zelo

6
Також потрібно 14.04 64 біт.
Kristinn Örn Sigurðsson

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 і мав таку ж проблему. Незважаючи на те, що всі вимоги, де встановлено, я отримував одну і ту ж помилку знову і знову. Виявилося, мій VM за замовчуванням мав мало пам’яті. З 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 install lxml

Якщо у вас виникли сумніви, натисніть тут


8

Після установки пакетів, згаданих AKX, у мене все ще була така ж проблема. Вирішили це с

apt-get install python-dev

6

Для Ubuntu 12.04.3 LTS (Precision 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.