Installazione del modulo lxml in python


88

durante l'esecuzione di uno script Python, ho ricevuto questo errore

  from lxml import etree
ImportError: No module named lxml

ora ho provato a installare lxml

sudo easy_install lmxl

ma mi dà il seguente errore

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 **

Utilizzando la configurazione build di 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

Risposte:


106

Basta fare:

sudo apt-get install python-lxml

Per Python 2 (ad esempio, richiesto da Inkscape):

sudo apt-get install python2-lxml

Se hai intenzione di installare dalla sorgente, la risposta di albertov ti aiuterà. Ma a meno che non ci sia un motivo, non farlo, installalo semplicemente dal repository.


6
Se stai usando un ambiente virtuale questa non è la risposta giusta.
AlexLordThorsen

71

L'ho risolto aggiornando la versione lxml con:

pip install --upgrade lxml

49

È necessario installare i file header di Python (pacchetto python-dev in debian / ubuntu) per compilare lxml. Oltre a libxml2, libxslt, libxml2-dev e libxslt-dev:

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

2
e libxml2-dev e libxslt-dev.
Lennart Regebro

1
libxslt non sembra essere richiesto (non lo era per me, almeno). Pertanto, apt-get install python-dev libxml2 libxml2-dev libxslt-devdovrebbe essere sufficiente
Mathieu

Ho dovuto farlo per installare WeasyPrint, le loro apt-getistruzioni per Debian 7 da sole non funzionavano.
dal

1
libxslt era essenziale per me, l'installazione di lxml non sarebbe andata avanti senza di essa.
axil

32

Se stai usando python3, dovrai fare:

pip3 install lxml


Questo è ciò che ha funzionato per me! Stavo usando python3 e installando le librerie per una versione precedente di python tramite pip. Per python3, dovremmo usare pip3.
Victor

5

Per RHEL / CentOS, esegui il comando "python --version" per scoprire la versione di Python. Ad esempio sotto:

$ python --version 
  Python 2.7.12

Ora esegui "sudo yum search lxml" per scoprire il pacchetto 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

Ora puoi scegliere il pacchetto secondo la tua versione di Python ed eseguire il comando come di seguito:

$ sudo yum install python27-lxml.x86_64

Sono su Windows. Eventuali soluzioni?
Paul,

usa "python2.7.exe -m pip install --upgrade lxml"
Oni


0

Se riscontri questo problema su un'immagine basata su Alpine, prova questo:

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

// pip install -r requirements.txt

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.