繁体   English   中英

在Mac OS X Mavericks上安装py-ldap(缺少sasl.h)

[英]Installing py-ldap on Mac OS X Mavericks (missing sasl.h)

我似乎无法在OS X Mavericks 10.9.1计算机上安装python ldap模块。

内核详细信息:uname -a Darwin 13.0.0 Darwin内核版本13.0.0:PDT 2013年9月19日22:22:27; 根目录: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和Python 2.6

但是有同样的错误。

我希望有人可以在这里帮助我。

使用来自@hharnisc和@ mick-t答案的片段。

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

解决方法
/ usr / include似乎已移动

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

现在运行pip install!

在我的特殊情况下,我不能简单地使用其他答案中提到的pip参数,因为我将它与tox一起使用以安装来自requirements.txt文件的依赖项,并且我需要tox.ini保持与非Mac的兼容性环境。

我能够以更简单的方式解决此问题:导出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 ),您可能必须在sip命令前加上sudo前缀。

我有同样的问题。 我在Mac上使用Macports,并且安装了cyrus-sasl2,该文件在/ opt / local / include / sasl /中提供sasl.h。 您可以使用pip的global-option参数将选项传递给build_ext。 要将include 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/

让我知道是否有帮助,或者您需要帮助。

我使用关于此问题的发现(包括此问题)的组合帖子最终提出了此问题(从较大的脚本中复制):

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?

运行扩展时出现此错误。

我修复了它,首先找到了sasl.h文件:

mdfind -name sasl.h

然后定义相应的CFLAGS环境变量:

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

最后再次进行扩展

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM