Je veux installer Lxml pour pouvoir ensuite installer Scrapy.
Lorsque j'ai mis à jour mon Mac aujourd'hui, il ne m'a pas permis de réinstaller lxml, le message d'erreur suivant s'affiche:
In file included from src/lxml/lxml.etree.c:314:
/private/tmp/pip_build_root/lxml/src/lxml/includes/etree_defs.h:9:10: fatal error: 'libxml/xmlversion.h' file not found
#include "libxml/xmlversion.h"
^
1 error generated.
error: command 'cc' failed with exit status 1
J'ai essayé d'utiliser brew pour installer libxml2 et libxslt, les deux bien installés mais je ne peux toujours pas installer lxml.
La dernière fois que j’avais installé, j’avais besoin d’activer les outils de développement sur Xcode mais depuis sa mise à jour vers Xcode 5, cette option ne m’est plus offerte.
Est-ce que quelqu'un sait ce que je dois faire?
Vous devez installer ou mettre à niveau l'outil de ligne de commande pour xcode. Essayez ceci dans un terminal:
xcode-select --install
J'ai résolu ce problème sur Yosemite en installant et en reliant libxml2
et libxslt
par le biais d'une infusion:
brew install libxml2
brew install libxslt
brew link libxml2 --force
brew link libxslt --force
Si vous avez résolu le problème à l'aide de cette méthode mais que celle-ci réapparaît ultérieurement, vous devrez peut-être exécuter cette opération avant les quatre lignes ci-dessus:
brew unlink libxml2
brew unlink libxslt
Si vous rencontrez des erreurs d'autorisation avec Homebrew, en particulier sur El Capitan, document utile . Essentiellement, quelle que soit la version d’OS X, essayez d’exécuter:
Sudo chown -R $(whoami):admin /usr/local
Vous pouvez résoudre votre problème en exécutant ceci sur la ligne de commande:
STATIC_DEPS=true pip install lxml
Cela m'a certainement aidé. Explications sur docs
J'ai essayé la plupart des solutions ci-dessus, mais aucune d'entre elles n'a fonctionné pour moi. J'utilise Yosemite 10.10, la seule solution qui a fonctionné pour moi a été de taper ceci dans le terminal:
Sudo CPATH=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/libxml2 CFLAGS=-Qunused-arguments CPPFLAGS=-Qunused-arguments pip install lxml
EDIT: Si vous utilisez virtualenv, le démarrage de Sudo n’est pas nécessaire.
Cela me dérange aussi depuis un moment. Je ne connais pas suffisamment les éléments internes de python distutils, etc., mais le chemin d'inclusion est incorrect. J'ai fait le piratage laid suivant pour me retenir jusqu'à ce que les personnes python lxml puissent faire le correct correctif.
Sudo ln -s /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/libxml2/libxml/ /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/libxml
Installation globale ... OS X 10.9.2
xcode-select --install
Sudo easy_install pip
Sudo CPATH=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/libxml2 CFLAGS=-Qunused-arguments CPPFLAGS=-Qunused-arguments pip install lxml
les instructions d'installation sur http://lxml.de/installation.html expliquent:
Pour accélérer la création d’environnements de test, par exemple, sur un serveur d'intégration continue, désactivez les optimisations du compilateur C en définissant la variable d'environnement CFLAGS:
CFLAGS="-O0" pip install lxml
Aucune de ce qui précède n'a fonctionné pour moi le 10.9.2, car la compilation a échoué avec l'erreur suivante:
clang: error: unknown argument: '-mno-fused-madd'
Ce qui conduit réellement à la solution la plus propre (voir plus de détails dans [1]):
export CFLAGS=-Qunused-arguments
export CPPFLAGS=-Qunused-arguments
pip install lxml
ou suivants si vous installez globalement
Sudo pip install lxml
[1] erreur clang: argument inconnu: '-mno-fused-madd' (échec de l'installation du package python)
xcode-select --install
Sudo easy_install pip
Sudo pip install lxml
J'ai résolu ce problème sur Yosemite
en exécutant les commandes suivantes:
xcode-select install #this may take several minutes.
pip install lxml
Avec homebrew, libxml2 est masqué pour ne pas interférer avec le système libxml2, aussi pip doit être un peu aidé pour le trouver.
Avec bash:
LDFLAGS=-L`brew --prefix libxml2`/lib CPPFLAGS=-I`brew --prefix libxml2`/include/libxml2 pip install --user lxml
Avec du poisson:
env LDFLAGS=-L(brew --prefix libxml2)/lib CPPFLAGS=-I(brew --prefix libxml2)/include/libxml2 pip install --user lxml
Malheureusement, xcode-select --install
n'a pas fonctionné pour moi car j'avais déjà la dernière version.
C'est très étrange, mais j'ai résolu le problème en ouvrant XCode et en acceptant les conditions d'utilisation. La réexécution de pip install lxml
n'a renvoyé aucune erreur après.
J'ai essayé toutes les réponses sur cette page, aucune d'entre elles n'a fonctionné pour moi. J'utilise OS X version 10.9.2
Mais cela fonctionne vraiment .... comme un charme:
ARCHFLAGS = -Wno-error = installation-de-pipeau-de-ligne-de-commande-non-utilisée-in-future installée lxml
OSX 10.9.2
Sudo env ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future STATIC_DEPS=true pip install lxml
Dans mon cas, je dois arrêter Kaspersky Antivirus avant d'installer LXML par:
pip install lxml
Après une installation réussie à partir de pip (lxml 3.6.4), une erreur s’est produite lors de l’importation du module lxml.etree.
Je cherchais sans cesse à installer ceci comme condition requise pour Scrapy, et j'ai essayé toutes les options, mais finalement cela a fonctionné pour moi (mac osx 10.11 python 2.7):
$ STATIC_DEPS=true Sudo easy_install-2.7 "lxml==2.3.5"
L'ancienne version de lxml semble fonctionner avec le module etree.
Pip peut souvent ignorer la version spécifiée d'un package, par exemple, lorsque vous avez la version la plus récente dans le cache pip, d'où le easy_install
. L'option '-2.7'
concerne la version python, omettez-la si vous effectuez l'installation pour python 3.x.
Après avoir beaucoup déchiré les cheveux et grincé des dents, j'ai désinstallé xcode avec pip et j'ai couru:
easy_install lxml
Et tout allait bien.
Cet article est lié à une solution qui fonctionnait pour moi Python3, lxml et "Symbole introuvable: _lzma_auto_decoder" sur Mac OS X 10.9
hth
avant de compiler, ajoutez le chemin d’accès à xmlversion.h dans votre environnement.
$ set INCLUDE=$INCLUDE:/private/tmp/pip_build_root/lxml/src/lxml/
Mais assurez-vous que le chemin que j'ai fourni contient le fichier xmlversion.h situé à l'intérieur. Ensuite,
$ python setup.py install
pip
n'a pas fonctionné pour moi. Je suis allé à https://pypi.python.org/pypi/lxml/2. et j'ai téléchargé le fichier .gg de macosx:
Ensuite, utilisez la ligne de commande easy_install
pour installer le fichier .Egg
.
J'utilise OSX 10.9.2 et j'obtiens la même erreur.
L'installation des outils de ligne de commande XCode n'aide pas pour cette version particulière d'OSX.
Je pense qu'une meilleure approche pour résoudre ce problème consiste à installer avec la commande suivante:
$ CPATH=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/libxml2 pip install lxml
Ceci est similaire au correctif de jdkoftinoff, mais ne modifie pas votre système de manière permanente.
J'ai rencontré la même question et après des jours de travail, j'ai résolu ce problème sous OS X 10.9.4, avec Python 3.4.1.
Voici ma solution,
Selon installation de lxml à partir de lxml.de,
Un macport de lxml est disponible. Essayez quelque chose comme l'installation du port py25-lxml
Si vous ne possédez pas MacPort, installez-le à partir de MacPort.org . C'est assez facile. Vous aurez peut-être également besoin d’un compilateur. Pour installer les outils de compilation XCode, utilisez xcode-select --install
Tout d'abord, j'ai mis à jour mon port avec la dernière version via Sudo port selfupdate
,
Ensuite, je viens de taper Sudo port install libxml2
et quelques minutes plus tard, vous devriez voir que libxml2 est installé avec succès. Vous aurez probablement aussi besoin de libxslt
pour installer LXML. Pour installer libxslt, utilisez: Sudo port install libxslt
.
Maintenant, tapez juste pip install lxml
, cela devrait fonctionner correctement.