Instalowanie modułu lxml w pythonie

88

podczas uruchamiania skryptu w języku Python wystąpił ten błąd

  from lxml import etree
ImportError: No module named lxml

teraz próbowałem zainstalować lxml

sudo easy_install lmxl

ale daje mi następujący błąd

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

Korzystanie z konfiguracji kompilacji 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
user563101
źródło

Odpowiedzi:

106

Po prostu zrób:

sudo apt-get install python-lxml

Dla Pythona 2 (np. Wymagane przez Inkscape):

sudo apt-get install python2-lxml

Jeśli planujesz instalację ze źródła, pomocna będzie odpowiedź albertova . Ale jeśli nie ma powodu, nie rób tego, po prostu zainstaluj go z repozytorium.

user225312
źródło
6
Jeśli korzystasz ze środowiska wirtualnego, to nie jest dobra odpowiedź.
AlexLordThorsen
71

Rozwiązałem to aktualizując wersję lxml za pomocą:

pip install --upgrade lxml
dbarenas
źródło
49

Musisz zainstalować pliki nagłówkowe Pythona (pakiet python-dev w debian / ubuntu), aby skompilować lxml. Oprócz libxml2, libxslt, libxml2-dev i libxslt-dev:

apt-get install python-dev libxml2 libxml2-dev libxslt-dev
albertov
źródło
2
oraz libxml2-dev i libxslt-dev.
Lennart Regebro
1
libxslt nie wydaje się być wymagane (przynajmniej nie dla mnie). Dlatego apt-get install python-dev libxml2 libxml2-dev libxslt-devpowinno wystarczyć
Mathieu,
Musiałem to zrobić, aby zainstalować WeasyPrint, ich apt-getinstrukcje dla samego Debiana 7 nie działały.
cnst
1
libxslt było dla mnie niezbędne, konfiguracja lxml nie przebiegłaby bez niego.
pacha
32

Jeśli używasz Python3, będziesz musiał zrobić:

pip3 install lxml

yennycheung
źródło
To właśnie zadziałało dla mnie! Używałem python3 i instalowałem biblioteki dla poprzedniej wersji pythona za pośrednictwem pip. Bo python3powinniśmy użyć pip3.
Victor
5

W przypadku RHEL / CentOS uruchom polecenie „python --version”, aby sprawdzić wersję Pythona. Np. Poniżej:

$ python --version 
  Python 2.7.12

Teraz uruchom "sudo yum search lxml", aby znaleźć pakiet 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

Teraz możesz wybrać pakiet zgodnie z wersją Pythona i uruchomić polecenie jak poniżej:

$ sudo yum install python27-lxml.x86_64
Krishna Pandey
źródło
Jestem w systemie Windows. Jakieś rozwiązania?
Paweł
użyj „python2.7.exe -m pip install --upgrade lxml”
Oni
1

W przypadku Pythona 3 to zadziałało

sudo apt-get install python3-lxml
Macumbaomuerte
źródło
0

Jeśli napotykasz ten problem na obrazie opartym na Alpine, spróbuj tego:

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

// pip install -r Requirements.txt

Ryan Augustine
źródło