Je n'arrive pas à obtenir le module python ldap installé sur ma machine OS X Mavericks 10.9.1.
Détails du noyau: uname -a Darwin 13.0.0 Darwin Kernel Version 13.0.0: Thu Sep 19 22:22:27 PDT 2013; racine: xnu-2422.1.72 ~ 6/RELEASE_X86_64 x86_64
J'ai essayé ce qui a été suggéré ici: http://projects.skurfer.com/posts/2011/python_ldap_lion/
Mais quand j'essaie d'utiliser pip, j'obtiens une erreur différente
Modules/LDAPObject.c: 18: 10: erreur fatale: fichier 'sasl.h' introuvable
* # inclut sasl.h
J'ai également essayé ce qui a été suggéré ici: python-ldap OS X 10.6 et Python 2.6
Mais avec la même erreur.
J'espère que quelqu'un pourrait m'aider ici.
en utilisant des éléments des réponses @hharnisc et @ mick-t.
pip install python-ldap \
--global-option=build_ext \
--global-option="-I$(xcrun --show-sdk-path)/usr/include/sasl"
ne solution de contournement
/usr/include semble s'être déplacé
$ xcrun --show-sdk-path
$ Sudo ln -s <the_path_from_above_command>/usr/include /usr/include
Maintenant lancez pip install!
Dans mon cas particulier, je ne pouvais pas simplement utiliser les arguments pip
mentionnés dans d'autres réponses parce que je l'utilise avec tox
pour installer les dépendances à partir d'un fichier requirements.txt, et j'ai besoin de mon tox.ini pour rester compatible avec les environnements non-Mac.
J'ai pu résoudre ce problème de manière beaucoup plus simple: exporter CFLAGS
de telle sorte qu'il ajoute un chemin d'inclusion aux en-têtes sasl déjà installés par Xcode:
$ pip install python-ldap
...
building '_ldap' extension
creating build/temp.macosx-10.10-x86_64-2.7
creating build/temp.macosx-10.10-x86_64-2.7/Modules
clang -fno-strict-aliasing -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -DHAVE_SASL -DHAVE_TLS -DHAVE_LIBLDAP_R -DHAVE_LIBLDAP_R -DLDAPMODULE_VERSION=2.4.19 -IModules -I/opt/openldap-RE24/include -I/usr/include/sasl -I/usr/include -I/Users/bc/.pyenv/versions/2.7.10/include/python2.7 -c Modules/LDAPObject.c -o build/temp.macosx-10.10-x86_64-2.7/Modules/LDAPObject.o
Modules/LDAPObject.c:18:10: fatal error: 'sasl.h' file not found
#include <sasl.h>
^
1 error generated.
error: command 'clang' failed with exit status 1
$ export CFLAGS="-I$(xcrun --show-sdk-path)/usr/include/sasl"
$ pip install python-ldap
...
Successfully installed python-ldap-2.4.19
Selon que vous utilisez ou non des outils conviviaux Python (j'utilise pyenv ), vous devrez peut-être préfixer vos commandes pip avec Sudo
.
J'ai eu le même problème. J'utilise Macports sur mon Mac et j'ai installé cyrus-sasl2 qui fournit sasl.h dans/opt/local/include/sasl /. Vous pouvez passer des options à build_ext en utilisant l'argument global-option de pip. Pour passer le chemin d'inclusion à /opt/local/include/sasl/sasl.h, exécutez pip comme ceci:
pip install python-ldap --global-option=build_ext --global-option="-I/opt/local/include/sasl"
Alternativement, vous pouvez le pointer vers la sortie de xcrun --show-sdk-path
fournit. Sur ma boîte, c'est: /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk
Ensuite, vous devez déterminer le CHEMIN vers les fichiers d'en-tête sasl. Pour moi, c'est:
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/sasl/
Faites-moi savoir si cela aide ou si vous avez besoin d'un coup de main.
J'ai eu cette erreur lors de l'exécution de buildout.
Je l'ai corrigé, trouvant d'abord le fichier sasl.h:
mdfind -name sasl.h
puis définir la variable d'environnement CFLAGS correspondante:
export CFLAGS="-I/opt/local/include/sasl"
et enfin relancer le buildout.
J'ai utilisé une combinaison de messages que j'ai trouvés sur ce problème (y compris celui-ci) pour finalement trouver cela (copié à partir d'un script plus grand):
export XC_SDK=$(xcrun --show-sdk-path)
export USR_INC=$XC_SDK/usr/include
export PATH=$USR_INC:$PATH
echo "installing python-ldap"
ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future pip install python-ldap
Vous pouvez le tester avec python -c "import ldap"
La principale raison pour laquelle je n'ai pas suivi les conseils de @hharnisc était que sur ma machine locale/usr/local n'avait pas bougé, donc j'ai juste mis temporairement $ XC_SDK devant lui sur le chemin, et cela semble fonctionner.
quelques sources:
comment installer PIL sur Macosx 10.9?