Como instalar o lxml no Ubuntu

442

Estou tendo dificuldade em instalar o lxml com o easy_install no Ubuntu 11.

Quando digito $ easy_install lxml, recebo:

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.

Parece que libxsltou libxml2não está instalado. Tentei seguir as instruções em http://www.techsww.com/tutorials/libraries/libxslt/installation/installing_libxslt_on_ubuntu_linux.php e http://www.techsww.com/tutorials/libraries/libxml/installation/installing_libxml_on_ubuntu_linux. php sem sucesso.

Se eu tentar, wget ftp://xmlsoft.org/libxml2/libxml2-sources-2.6.27.tar.gzeu recebo

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

Se eu tentar o outro primeiro, eu irei ./configure --prefix=/usr/local/libxslt --with-libxml-prefix=/usr/local/libxml2e isso falhará eventualmente com:

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

Eu tentei ambas as versões 2.6.27e 2.6.29dos libxml2sem diferença.

Não deixando pedra sobre pedra, consegui sudo apt-get install libxml2-dev, mas isso não muda nada.

Eric Wilson
fonte

Respostas:

950

Como você está no Ubuntu, não se preocupe com esses pacotes de fontes. Basta instalar esses pacotes de desenvolvimento usando o apt-get.

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

Se você está satisfeito com uma versão possivelmente mais antiga do lxml, tente

apt-get install python-lxml

e acabar com isso. :)

AKX
fonte
51
esta resposta deve ser adicionada às instruções de instalação do lxml :) obrigado +1
Boaz
43
Depois de correr apt-get install libxml2-dev libxslt-devvocê pode apenaseasy_install lxml
Bob Jansen
11
na última ubuntu-like distros, você tem que instalar libxslt1-dev em vez de libxslt-dev
Jose A. Martín
21
Pelo menos no Ubuntu 14.04, você também precisa instalar o pacote zlib1g-dev.
Christian Berendt
3
No Ubuntu 16.04 também zlib1g-devé necessário. Sem isso, recebi o erro /usr/bin/ld: cannot find -lz.
Jabba
111

Eu também tive que instalar o lib32z1-dev antes que o lxml fosse compilado (Ubuntu 13.04 x64).

sudo apt-get install lib32z1-dev

Ou todos os pacotes necessários juntos:

sudo apt-get install libxml2-dev libxslt-dev python-dev lib32z1-dev
Druska
fonte
9
+1. Este pacote foi necessário mesmo após a instalação de todos os outros pacotes mencionados.
Jayesh Bhoot
1
yeh eu também precisava disso em 13,04
mwjackson
3
Por que ele precisa dos cabeçalhos de um pacote lib32? Talvez zlib1g-dev também funcione?
Pepijn 24/09
1
O zlib1g-dev era necessário no ubuntu 13.04
Zelo
6
Também necessário em 14.04 64 bits.
Kristinn Örn Sigurðsson
43

Como o @Pepijn comentou a resposta do @Druska, no ubuntu 13.04 x64, não há necessidade de usar lib32z1-dev, o zlib1g-dev é suficiente:

sudo apt-get install libxml2-dev libxslt-dev python-dev zlib1g-dev
JimmyYe
fonte
16

Instalei o lxml com pip no Vagrant, usando o Ubuntu 14.04 e tive o mesmo problema. Mesmo que todos os requisitos tenham sido instalados, eu recebi o mesmo erro repetidamente. Acabou que minha VM tinha pouca memória por padrão. Com 1024 MB, tudo funciona bem.

Adicione isso ao seu VagrantFile e o lxml deve compilar / instalar corretamente:

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

Obrigado ao sixhobbit pela dica (veja: não é possível instalar o lxml no Ubuntu 12.04 ).

Chris
fonte
Isso funcionou para mim. Obrigado. Ele disse que a compilação falhou com o status 4, caso isso ajude outras pessoas.
Kurtis
esta resposta não tem nada a ver com a pergunta do OP
Corey Goldberg
10

Para o Ubuntu 14.04

sudo apt-get install python-lxml

trabalhou para mim.

Wade
fonte
7
Bem, isso são más notícias. Eu ganhei mais de 1000 rep a partir desta pergunta, se eles fixaram que ele vai parar de ficar vistas ... 😊
Eric Wilson
9

Passo 1

Instale as atualizações mais recentes do python usando este comando.

sudo apt-get install python-dev

Passo 2

Adicione a primeira dependência libxml2 versão 2.7.0 ou posterior

sudo apt-get install libxml2-dev

etapa 3

Adicione a segunda dependência libxslt versão 1.1.23 ou posterior

sudo apt-get install libxslt1-dev

Passo 4

Instale a ferramenta de gerenciamento de pacotes pip primeiro. e execute este comando.

pip install lxml

Em caso de dúvida, clique aqui

Simplans
fonte
8

Depois de instalar os pacotes mencionados pelo AKX, eu ainda tinha o mesmo problema. Resolvido com

apt-get install python-dev
bcoughlan
fonte
6

Para o Ubuntu 12.04.3 LTS (Precise Pangolin), eu tinha que fazer:

apt-get install libxml2-dev libxslt1-dev

(Observe o "1" em libxslt1-dev)

Depois, instalei o lxml com o pip / easy_install.

gonz
fonte
2

No Ubuntu 18.4 (Bionic Beaver), é aconselhável usar o apt em vez do apt-get, pois ele possui uma forma estrutural muito melhor.

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

Se você está satisfeito com uma versão possivelmente mais antiga lxml, tente

sudo apt install python-lxml
Rarblack
fonte
1

Muitas respostas aqui são bastante antigas,
graças ao ponteiro de @Simplans ( https://stackoverflow.com/a/37759871/417747 ) e à página inicial ...

O que funcionou para mim (Ubuntu biônico):

sudo apt-get install python3-lxml  

(+ sudo apt-get install libxml2-dev libxslt1-devInstalei antes, mas não tenho certeza se esse ainda é o requisito)

NSGaga - principalmente inativo
fonte
1
Sim, respostas antigas sobre uma pergunta antiga. Quero dizer, eu estava no Ubuntu 11 quando perguntei!
23419 Eric Eric
Sim, duvido que você ainda possa perguntar aqui (seria transferido para o Ubuntu etc.), mas ainda está atraindo muitas pesquisas na Web. E duvide que alguém ainda esteja usando o Ubuntu 11 :). E então as versões e pacotes antigos do Linux incompatíveis, espero que melhore um dia.
NSGaga-inativo principalmente
0

Primeiro instale o python-lxmlpacote do Ubuntu e suas dependências:

sudo apt-get install python-lxml

Em seguida, use pippara atualizar para a versão mais recente do lxml para Python:

pip install lxml
Joseph
fonte
apenas as respostas do código são desaprovadas. Adicione algumas explicações
Manos Nikolaidis
Embora essa resposta possa estar correta, adicione algumas explicações. Impartir a lógica subjacente é mais importante do que apenas fornecer o código, porque ajuda o OP e outros leitores a resolver esses problemas e outros similares.
CodeMouse92
Voto negativo, porque nada de novo é adicionado a uma pergunta que já tem várias boas respostas.
Eric Wilson