web-dev-qa-db-ja.com

Mac OS X Mavericksにpy-ldapをインストールする(sasl.hがない)

OS X Mavericks 10.9.1マシンにpython ldapモジュールをインストールすることができないようです。

カーネルの詳細:uname -a Darwin 13.0.0 Darwin Kernel Version 13.0.0:Thu Sep 19 22:22:27 PDT 2013; root:xnu-2422.1.72〜6/RELEASE_X86_64 x86_64

私はここで提案されたものを試しました: http://projects.skurfer.com/posts/2011/python_ldap_lion/

しかし、pipを使用しようとすると、別のエラーが発生します

Modules/LDAPObject.c:18:10:致命的なエラー: 'sasl.h'ファイルが見つかりません

*#include sasl.h

私はここで提案されたものも試しました: python-ldap OS X 10.6 and Python 2.6

しかし、同じエラーが発生します。

誰かが私を助けてくれることを願っています。

33
gprx100

@hharniscと@ mick-tの両方からの回答を使用します。

pip install python-ldap \
   --global-option=build_ext \
   --global-option="-I$(xcrun --show-sdk-path)/usr/include/sasl"
92
dnozay

回避策
/usr/includeが移動したようです

$ xcrun --show-sdk-path    
$ Sudo ln -s <the_path_from_above_command>/usr/include /usr/include

次に、pip installを実行します。

32
hharnisc

私の特定のケースでは、pipと一緒に使用してRequirements.txtファイルから依存関係をインストールしているので、他の回答に記載されているtox引数を単純に使用することはできません。 Mac以外の環境との互換性を維持するtox.ini。

私はこれをはるかに簡単な方法で解決できました:CFLAGSをエクスポートして、Xcodeによって既にインストールされているsaslヘッダーにインクルードパスを追加します。

$ 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

ユーザースペースに適したツールを使用するかどうかに応じて、Pythonツール(私は pyenv を使用します)、pipコマンドの前にSudoを付ける必要がある場合があります。

20
Brian Cline

私も同じ問題を抱えていました。私はMacでMacportsを使用していて、/ opt/local/include/sasl /にsasl.hを提供するcyrus-sasl2がインストールされています。 pipのグローバルオプション引数を使用して、build_extにオプションを渡すことができます。インクルードPATHを/opt/local/include/sasl/sasl.hに渡すには、次のようにpipを実行します。

pip install python-ldap --global-option=build_ext --global-option="-I/opt/local/include/sasl"

または、xcrun --show-sdk-pathからの出力が提供するものを指すようにすることもできます。私の箱には:/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk

次に、saslヘッダーファイルへのPATHを決定する必要があります。私にとっては:

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/sasl/

それで問題が解決する場合、またはサポートが必要な場合はお知らせください。

5
Mick T

ビルドアウトを実行すると、このエラーが発生しました。

最初にsasl.hファイルを見つけて修正しました。

mdfind -name sasl.h

次に、対応するCFLAGS環境変数を定義します。

export CFLAGS="-I/opt/local/include/sasl"

そして最後にもう一度buildoutを実行します。

0
erny

私はこの問題(この問題を含む)について見つけた投稿を組み合わせて、最終的にこれを思いつきました(より大きなスクリプトからコピー)。

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

python -c "import ldap"でテストできます

@hharniscのアドバイスに従わなかった主な理由は、ローカルマシンでは/ usr/localが移動しなかったため、一時的に$ XC_SDKをパスの前に置いただけで、それが機能しているようです。

いくつかの情報源:
Macosx 10.9にPILをインストールする方法?

0
Peter Hanley