Python 在Mac OS X Mavericks上安装py ldap(缺少sasl.h)
我似乎无法在我的OSX Mavericks 10.9.1机器上安装python ldap模块 内核详细信息: 找到对应内核版本 达尔文13.0.0达尔文内核版本13.0.0:Thu Sep 19 22:22:27 PDT 2013;根目录:xnu-2422.1.72~6/RELEASE\u X86\u 64 X86\u 64 我尝试了这里的建议: 但是当我尝试使用pip时,我得到了一个不同的错误 Modules/LDAPObject.c:18:10:致命错误:“未找到sasl.h”文件 *#包括sasl.h 我还尝试了这里的建议: 但同样的错误Python 在Mac OS X Mavericks上安装py ldap(缺少sasl.h),python,ldap,osx-mavericks,Python,Ldap,Osx Mavericks,我似乎无法在我的OSX Mavericks 10.9.1机器上安装python ldap模块 内核详细信息: 找到对应内核版本 达尔文13.0.0达尔文内核版本13.0.0:Thu Sep 19 22:22:27 PDT 2013;根目录:xnu-2422.1.72~6/RELEASE\u X86\u 64 X86\u 64 我尝试了这里的建议: 但是当我尝试使用pip时,我得到了一个不同的错误 Modules/LDAPObject.c:18:10:致命错误:“未找到sasl.h”文件 *#包
我希望有人能帮我解决这个问题。一个解决办法
/usr/include似乎已移动
$ xcrun --show-sdk-path
$ sudo ln -s <the_path_from_above_command>/usr/include /usr/include
$xcrun--显示sdk路径
$sudo ln-s/usr/include/usr/include
现在运行pip安装 我也有同样的问题。我在Mac上使用Macports,我安装了cyrus-sasl2,它在/opt/local/include/sasl/中提供sasl.h。您可以使用pip的全局选项参数将选项传递给build_ext。要将include路径传递给/opt/local/include/sasl/sasl.h,请按如下方式运行pip:
pip安装python ldap--global option=build_ext--global option=“-I/opt/local/include/sasl”
或者,您可以将其指向xcrun--showsdkpath
提供的任何输出。在我的盒子上是:
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk
然后需要确定sasl头文件的路径。对我来说,这是:
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/sasl/
如果有帮助或者你需要帮忙,请告诉我。我使用了我找到的关于这个问题的帖子(包括这篇)的组合,最终得出了以下结论(从一个更大的脚本复制): 您可以使用
python-c“导入ldap”
我没有听从@hharnisc的建议的主要原因是,在我的本地机器上/usr/local没有移动,所以我只是暂时将$XC_SDK放在路径上,这似乎是可行的
一些来源:使用@hharnisc和@mick-t答案中的片段
pip install python-ldap \
--global-option=build_ext \
--global-option="-I$(xcrun --show-sdk-path)/usr/include/sasl"
在我的特殊情况下,我不能简单地使用其他答案中提到的
pip
参数,因为我将它与tox
一起使用,以安装requirements.txt文件中的依赖项,并且我需要我的tox.ini与非Mac环境保持兼容
我能够以更简单的方式解决这个问题:导出CFLAGS
,这样它就可以向已经由Xcode安装的sasl头添加一个include路径:
$ 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
$pip安装python ldap
...
正在生成“\u ldap”扩展
创建构建/临时macosx-10.10-x86_64-2.7
创建build/temp.macosx-10.10-x86_64-2.7/Modules
clang-fno严格别名-I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include-DNDEBUG-g-fwrapv-O3-Wall-Wstrict原型-DHAVE_SASL-DHAVE_LIBLDAP_R-DHAVE_LIBLDAP_R-DLDAPMODULE VERSION=2.4.19-IModules-I/opt/openldap-RE24/include-I/usr/include/SASL-I/usr/SASL/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:致命错误:“未找到sasl.h”文件
#包括
^
生成1个错误。
错误:命令“clang”失败,退出状态为1
$export CFLAGS=“-I$(xcrun--show sdk path)/usr/include/sasl”
$pip安装python ldap
...
已成功安装python-ldap-2.4.19
根据您是否使用任何用户空间友好的Python工具(我使用),您可能必须在pip命令前面加上
sudo
我在运行buildout时遇到了这个错误
我修复了它,首先找到sasl.h文件:
mdfind -name sasl.h
然后定义相应的CFLAGS环境变量:
export CFLAGS="-I/opt/local/include/sasl"
最后再次运行buildout。我刚看到这个,运气不好。太棒了!这只是修正了我身边的很多事情,为我在OSX小牛上工作,为我在约塞米蒂工作。作为一行代码:
sudo ln-s`xcrun--show sdk path`/usr/include/usr/include
。如果启用了此功能,则此功能在El Capitan上不再有效。另一种方法(将-I
传递给pip)有效。我在mac上没有sudo权限,这就成功了!这对我在约塞米蒂的工作也有帮助。我不需要安装任何macports或与此特定安装相关的自制软件。谢谢这也适用于El Capitan/10.11,系统完整性保护处于启用状态。我在@hharnisc的解决方案中手动创建链接时遇到问题(ln:/usr/include:Operation not allowed
,甚至与sudo一样),但这在El Capitan上起到了作用。为了解决权限问题并隔离库安装,我建议使用virtualenv:“python-m virtualenv/yoursource;/yoursouhce/bin/pip install blah”这将安装项目的所有本地内容,避免与其他项目冲突。sudo-pip install python ldap--global option=build_ext--global option=“-I$(xcrun--show sdk path)/usr/include/sasl”在OS X Yosemite中为我工作时,下载/解包python ldap时出错。谢谢还有High Sierra+1 :)
export CFLAGS="-I/opt/local/include/sasl"