Instalando o módulo lxml em python

89

durante a execução de um script python, recebi este erro

  from lxml import etree
ImportError: No module named lxml

agora tentei instalar lxml

sudo easy_install lmxl

mas me dá o seguinte erro

Building lxml version 2.3.beta1.
NOTE: Trying to build without Cython, pre-generated 'src/lxml/lxml.etree.c' needs to be available.
ERROR: /bin/sh: xslt-config: not found

** make sure the development packages of libxml2 and libxslt are installed **

Usando a configuração de compilação do libxslt

src/lxml/lxml.etree.c:4: fatal error: Python.h: No such file or directory
compilation terminated.
error: Setup script exited with error: command 'gcc' failed with exit status 1
usuário563101
fonte

Respostas:

108

Apenas faça:

sudo apt-get install python-lxml

Para Python 2 (por exemplo, exigido pelo Inkscape):

sudo apt-get install python2-lxml

Se você está planejando instalar a partir do código-fonte, a resposta de albertov ajudará. Mas, a menos que haja um motivo, não instale-o apenas a partir do repositório.

user225312
fonte
6
Se você está usando um ambiente virtual, esta não é a resposta certa.
AlexLordThorsen
72

Resolvi atualizando a versão lxml com:

pip install --upgrade lxml
dbarenas
fonte
49

Você precisa instalar os arquivos de cabeçalho do Python (pacote python-dev no debian / ubuntu) para compilar o lxml. Bem como libxml2, libxslt, libxml2-dev e libxslt-dev:

apt-get install python-dev libxml2 libxml2-dev libxslt-dev
Albertov
fonte
2
e libxml2-dev e libxslt-dev.
Lennart Regebro
1
libxslt não parece ser necessário (não era para mim, pelo menos). Portanto, apt-get install python-dev libxml2 libxml2-dev libxslt-devdeve ser suficiente
Mathieu
Eu tive que fazer isso para instalar o WeasyPrint, suas apt-getinstruções para o Debian 7 sozinho não funcionaram.
cnst
1
A libxslt era essencial para mim, a configuração do lxml não funcionaria sem ela.
axil
35

Se você estiver executando o python3, terá que fazer:

pip3 install lxml

Yennycheung
fonte
Isto é o que funcionou para mim! Eu estava usando o python3 e instalando bibliotecas para uma versão anterior do python via pip. Para python3, devemos usar pip3.
Victor
5

Para RHEL / CentOS, execute o comando "python --version" para descobrir a versão do Python. Por exemplo, abaixo:

$ python --version 
  Python 2.7.12

Agora execute "sudo yum search lxml" para descobrir o pacote python * -lxml.

$ sudo yum search lxml
Failed to set locale, defaulting to C
Loaded plugins: priorities, update-motd, upgrade-helper
1014 packages excluded due to repository priority protections
============================================================================================================= N/S matched: lxml =============================================================================================================
python26-lxml-docs.noarch : Documentation for python-lxml
python27-lxml-docs.noarch : Documentation for python-lxml
python26-lxml.x86_64 : ElementTree-like Python bindings for libxml2 and libxslt
python27-lxml.x86_64 : ElementTree-like Python bindings for libxml2 and libxslt

Agora você pode escolher o pacote de acordo com a sua versão do Python e executar o comando como abaixo:

$ sudo yum install python27-lxml.x86_64
Krishna Pandey
fonte
Estou no Windows. Alguma solução?
Paulo
use "python2.7.exe -m pip install --upgrade lxml"
Oni
2

Para python 3, isso funcionou para mim

sudo apt-get install python3-lxml
Macumbaomuerte
fonte
0

Se você está encontrando esse problema em uma imagem baseada em Alpine, tente o seguinte:

apk add --update --no-cache g++ gcc libxml2-dev libxslt-dev python-dev libffi-dev openssl-dev make

// pip install -r requisitos.txt

Ryan Augustine
fonte