Cách cài đặt lxml trên Ubuntu


442

Tôi gặp khó khăn khi cài đặt lxml với easy_install trên Ubuntu 11.

Khi tôi gõ $ easy_install lxmltôi nhận được:

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.

Có vẻ như libxslthoặc libxml2không được cài đặt. Tôi đã thử làm theo các hướng dẫn tại http://www.techsww.com/tutorials/lologists/libxslt/installation/installing_libxslt_on_ub Ubuntu_linux.phphttp://www.techsww.com/tutorials/lologists/libxml/installation/installing_l_ php không thành công.

Nếu tôi cố gắng wget ftp://xmlsoft.org/libxml2/libxml2-sources-2.6.27.tar.gztôi nhận được

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

Nếu tôi thử cái khác trước, tôi sẽ nhận được ./configure --prefix=/usr/local/libxslt --with-libxml-prefix=/usr/local/libxml2và cuối cùng sẽ thất bại với:

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

Tôi đã thử cả hai phiên bản 2.6.272.6.29của libxml2không có sự khác biệt.

Không để lại hòn đá nào, tôi đã thực hiện thành công sudo apt-get install libxml2-dev, nhưng điều này không thay đổi gì.

Câu trả lời:


950

Vì bạn đang sử dụng Ubuntu, đừng bận tâm với các gói nguồn đó. Chỉ cần cài đặt các gói phát triển bằng apt-get.

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

Nếu bạn hài lòng với phiên bản cũ hơn của lxml, bạn có thể thử

apt-get install python-lxml

và được thực hiện với nó. :)


51
câu trả lời này nên được thêm vào hướng dẫn cài đặt lxml :) cảm ơn +1
Boaz

43
Sau khi chạy, apt-get install libxml2-dev libxslt-devbạn có thể chỉ cầneasy_install lxml
Bob Jansen

11
trong các bản phân phối giống như Ubuntu mới nhất, bạn phải cài đặt libxslt1-dev thay vì libxslt-dev
Jose A. Martín

21
Ít nhất trên Ubuntu 14.04 bạn cũng phải cài đặt gói zlib1g-dev.
Christian Berendt

3
Trên Ubuntu 16.04 cũng vậy zlib1g-dev. Nếu không có điều này, tôi đã nhận được lỗi /usr/bin/ld: cannot find -lz.
Jabba

111

Tôi cũng đã phải cài đặt lib32z1-dev trước khi lxml biên dịch (Ubuntu 13.04 x64).

sudo apt-get install lib32z1-dev

Hoặc tất cả các gói yêu cầu cùng nhau:

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

9
+1. Gói này được yêu cầu ngay cả sau khi cài đặt tất cả các gói được đề cập khác.
Jayesh Bhoot

1
yeh tôi cũng cần cái này vào ngày 13.04
mwjackson

3
Tại sao nó cần các tiêu đề của gói lib32? Có lẽ zlib1g-dev cũng sẽ hoạt động?
Pepijn

1
zlib1g-dev là cần thiết trên Ubuntu 13.04
Zelo

6
Cũng cần trên 14.04 64 bit.
Kristinn rn Sigurðsson

43

Như @Pepijn đã nhận xét về câu trả lời của @Druska, trên Ubuntu 13.04 x64, không cần sử dụng lib32z1-dev, zlib1g-dev là đủ:

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

16

Tôi đã cài đặt lxml với pip trong Vagrant, sử dụng Ubuntu 14.04 và gặp vấn đề tương tự. Mặc dù tất cả các yêu cầu được cài đặt, tôi vẫn gặp lỗi tương tự. Hóa ra, VM của tôi phải có ít bộ nhớ theo mặc định. Với 1024 MB mọi thứ hoạt động tốt.

Thêm phần này vào VagrantFile và lxml sẽ được biên dịch / cài đặt đúng cách:

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

Cảm ơn Sixhobbit cho gợi ý (xem: không thể cài đặt lxml trên Ubuntu 12.04 ).


Điều này làm việc cho tôi. Cảm ơn. Nó cho biết trình biên dịch thất bại với trạng thái 4, trong trường hợp giúp bất kỳ ai khác.
Kurtis

câu trả lời này không liên quan gì đến câu hỏi của OP
Corey Goldberg

10

Dành cho Ubuntu 14.04

sudo apt-get install python-lxml

đã làm cho tôi.


7
Vâng, đó là tin xấu. Tôi đã đạt được hơn 1000 đại diện từ câu hỏi này, nếu họ đã sửa rằng nó sẽ ngừng nhận được lượt xem ... 😊
Eric Wilson

9

Bước 1

Cài đặt bản cập nhật python mới nhất bằng lệnh này.

sudo apt-get install python-dev

Bước 2

Thêm phụ thuộc đầu tiên libxml2 phiên bản 2.7.0 trở lên

sudo apt-get install libxml2-dev

Bước 3

Thêm libxslt phụ thuộc thứ hai phiên bản 1.1.23 trở lên

sudo apt-get install libxslt1-dev

Bước 4

Cài đặt công cụ quản lý gói pip trước. và chạy lệnh này.

pip install lxml

Nếu bạn có bất kỳ nghi ngờ gì Bấm vào đây


8

Sau khi cài đặt các gói được đề cập bởi AKX tôi vẫn gặp vấn đề tương tự. Giải quyết nó với

apt-get install python-dev

6

Đối với Ubuntu 12.04.3 LTS (Pangolin chính xác) tôi phải làm:

apt-get install libxml2-dev libxslt1-dev

(Lưu ý "1" trong libxslt1-dev)

Sau đó, tôi chỉ cần cài đặt lxml với pip / easy_install.


2

Từ Ubuntu 18.4 (Bionic Beaver), nên sử dụng apt thay vì apt-get vì nó có dạng cấu trúc tốt hơn nhiều.

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

Nếu bạn hài lòng với phiên bản cũ hơn có thể lxmlhoàn toàn, bạn có thể thử

sudo apt install python-lxml

1

Nhiều câu trả lời ở đây khá cũ,
nhờ vào con trỏ từ @Simplans ( https://stackoverflow.com/a/37759871/417747 ) và trang chủ ...

Điều gì làm việc cho tôi (Ubuntu bionic):

sudo apt-get install python3-lxml  

(+ sudo apt-get install libxml2-dev libxslt1-devTôi đã cài đặt trước nó, nhưng không chắc đó có phải là yêu cầu không)


1
Vâng, câu trả lời cũ cho một câu hỏi cũ. Ý tôi là, tôi đã dùng Ubuntu 11 khi tôi hỏi!
Eric Wilson

vâng, tôi nghi ngờ bạn thậm chí còn có thể hỏi nó ở đây nữa (sẽ được chuyển sang ubfox, v.v.) nhưng nó vẫn không đạt được nhiều tìm kiếm trên web. Và nghi ngờ bất cứ ai vẫn đang sử dụng Ubuntu 11 :). Và sau đó các phiên bản linux cũ và các gói không tương thích, hy vọng rằng sẽ cải thiện một ngày nào đó.
NSGaga hầu hết không hoạt động

0

Đầu tiên cài đặt python-lxmlgói Ubuntu và các phụ thuộc của nó:

sudo apt-get install python-lxml

Sau đó sử dụng pipđể nâng cấp lên phiên bản lxml mới nhất cho Python:

pip install lxml

mã chỉ có câu trả lời được tán thành Thêm một số lời giải thích
Manos Nikolaidis

Trong khi câu trả lời này có thể đúng, xin vui lòng thêm một số giải thích. Truyền đạt logic cơ bản quan trọng hơn là chỉ đưa ra mã, bởi vì nó giúp OP và các độc giả khác tự khắc phục vấn đề này và các vấn đề tương tự.
CodeMouse92

Bỏ phiếu vì không có gì mới được thêm vào một câu hỏi đã có nhiều câu trả lời hay.
Eric Wilson
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.