web-dev-qa-db-fra.com

Installation de py-ldap sur Mac OS X Mavericks (sasl.h manquant)

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.

33
gprx100

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"
92
dnozay

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!

32
hharnisc

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 .

20
Brian Cline

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.

5
Mick T

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.

0
erny

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?

0
Peter Hanley