Hinweis: Ich verwende virtualenvwrapper.
Vor dem Aktivieren der virtuellen Umgebung:
$ pip install lxml
Requirement already satisfied (use --upgrade to upgrade): lxml in /usr/lib/python2.7/dist-packages
Cleaning up...
Nach dem Aktivieren der virtuellen Umgebung:
(test-env)$ pip install lxml
force/build/lxml/src/lxml/includes/etree_defs.h:9:31: fatal error:
libxml/xmlversion.h: No such file or directory
compilation terminated.
error: command 'gcc' failed with exit status 1
----------------------------------------
Command /home/chaz/dev/envs/test-with-system-python-force/bin/python2
.7 -c "import setuptools;__file__='/home/chaz/dev/envs/test-with-
system-python-force/build/lxml/setup.py';exec(compile(open(__file__).
read().replace('\r\n', '\n'), __file__, 'exec'))" install --record
/tmp/pip-bJ6Q_B-record/install-record.txt --single-version-externally
-managed --install-headers /home/chaz/dev/envs/test-env/include/site/python2.7 failed with error code 1 in
/home/chaz/dev/envs/test-env/build/lxml
Storing complete log in /home/chaz/.pip/pip.log
python
virtualenv
virtualenvwrapper
Brian Dant
quelle
quelle
Antworten:
Sie haben wahrscheinlich bereits lxml auf Ihrem System installiert, möglicherweise aufgrund eines Systempakets. Somit
pip install lxml
schlägt der erste Versuch ( ohne eine aktive virtuelle Umgebung) nicht fehl, sondern installiert ihn auch nicht. es macht wirklich nichts.In einer virtuellen Umgebung werden die Systempakete standardmäßig ignoriert. Daher glaubt pip, dass lxml nicht installiert ist. Daher wird versucht, es in Ihrer virtuellen Umgebung zu installieren.
lxml enthält C-Module, die kompiliert werden müssen, um ordnungsgemäß installiert zu werden. Die Kompilierung dieser C-Module setzt jedoch voraus, dass bereits einige "Entwicklungsbibliotheken" installiert sind. Diese Entwicklungsbibliotheken sind C-Bibliotheken, nicht Python, und daher kann pip sie nicht automatisch aus dem Internet abrufen und für Sie installieren.
Daher müssen Sie diese Entwicklungsbibliotheken selbst installieren, höchstwahrscheinlich mithilfe Ihres Paketmanagers. In einem Debian-System (wie Ubuntu) ist dies ...
Dadurch werden die Entwicklungsbibliotheken libxml2 und libxslt auf Ihrem lokalen System installiert. Wenn Sie erneut versuchen, lxml zu installieren, sollte der Kompilierungsschritt des C-Moduls funktionieren, da sich diese Entwicklungsbibliotheken jetzt auf Ihrem System befinden.
Die Fehlermeldung, die Sie erhalten haben, war darauf zurückzuführen, dass diese Bibliotheken fehlten (der
libxml/xmlversion.h: No such file or directory
Teil der Fehlermeldung).Siehe auch: So installieren Sie lxml unter Ubuntu
quelle
Successfully installed lxml
Vielen Dank! Ich bin gespannt, ob Sie einen Ort kennen, der die erforderlichen Header verschiedenen (beliebten) Python-Paketen zuordnet. Ich hatte auch Probleme mit anderen. Bekommt der apt-get python-dev nur Header für die Standardbibliothek?für Centos-Benutzer: beim Erhalten von:
TUN:
quelle
Wenn Sie
lxml
auf Systemebene installiert haben und es in ein Verzeichnis migrieren möchten, mitvirtualenv
dem Sie es nicht erstellt haben--system-site-packages
, können Sie es in den Ordner Ihresvirtualenv
Benutzersdist-packages
einbinden.Außerhalb Ihrer
virtualenv
, in einer Python-Shell:import lxml print lxml.__file__
In meinem Fall ist es in gefunden
/usr/lib/python2.7/dist-packages
. Es wird einen lxml-Ordner und eine Ei-Info-Datei geben. Wo immer sich Ihre virtuelle Umgebung befindet, gehen Sie in ihren/lib/python-x.y/dist-packages
Ordner (den Sie möglicherweise erstellen müssendist-packages
) und verknüpfen Sie sowohl den Bibliotheksordner als auch das Ei damit.quelle
Sie suchen höchstwahrscheinlich danach: Microsoft Visual C ++ 14.0 ist erforderlich (vcvarsall.bat kann nicht gefunden werden)
Suchen Sie nach der Visual Studio-Website und gehen Sie unten zu: "Tools for Visual Studio". Erweitern Sie sie, indem Sie auf klicken. Wählen Sie oben neben "Build Tools for Visual Studio 2017" die Option "Download".
quelle