[英]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
我有同样的问题。 我在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.