Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在Mac OS X Mavericks上安装py ldap(缺少sasl.h)_Python_Ldap_Osx Mavericks - Fatal编程技术网

Python 在Mac OS X Mavericks上安装py ldap(缺少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”文件 *#包

我似乎无法在我的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

我还尝试了这里的建议:

但同样的错误


我希望有人能帮我解决这个问题。

一个解决办法
/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"