我无法安装python-ldap


265

当我运行以下命令时:

sudo pip install python-ldap

我收到此错误:

在Modules / LDAPObject.c:9包含的文件中:

Modules / errors.h:8:致命错误:lber.h:没有此类文件或目录

任何想法如何解决这一问题?


1
这就是我为我修复的方式。我在Amazon EC2-Instance上,进入usr/bin/目录后发现我pip, pip-2.7, pip-3.6, and pip-python这样做了sudo pip-3.6 install ldap3,它对我有用。
凯尔·布​​莱恩汀汀

1
@KyleBridenstine蟒蛇,LDAP是不是一回事LDAP3。
David Mulder

Answers:


427

蟒蛇,LDAP是基于OpenLDAP的,所以你必须为了编译Python模块的开发文件(头)。如果您使用的是Ubuntu,则该软件包称为libldap2-dev

Debian / Ubuntu

sudo apt-get install libsasl2-dev python-dev libldap2-dev libssl-dev

RedHat / CentOS

sudo yum install python-devel openldap-devel

2
感谢那。更进一步,它现在无法通过sasl.h失败,没有这样的文件或目录
VacuumTube 2011年

68
@VacuumTube:缺少标头几乎始终是缺少-dev软件包的标志(有时也称为-devel)。这样做apt-cache search sasl | grep dev,您可能会找到合适的软件包-我猜是libsasl2-dev
2011年

5
适用于Windows用户:(同样的错误,到目前为止没有解决方案
Shailen

4
您不必从Windows上的源代码进行编译。只需使用pypi.python.org/pypi/python-ldap中的安装程序之一即可。
Semmel 2013年

3
同样,Windows用户可以提取提到的.msi安装程序@Semmel来安装到virtualenv中:如何在Windows上的python 2.7 virtualenv上安装python-ldap而不进行编译(请参阅更新2)
Dave

143

要使用pip成功安装python-ldap,需要以下开发库(软件包名称取自ubuntu环境):

sudo apt-get install -y python-dev libldap2-dev libsasl2-dev libssl-dev

谢谢。这就是您所需要的。然后您跑步sudo pip install python-ldap
Sudipta Basak

71

在CentOS / RHEL 6上,您需要安装:

sudo yum install python-devel
sudo yum install openldap-devel

yum也将cyrus-sasl-devel作为依赖项安装。然后,您可以运行:

pip-2.7 install python-ldap

32

在Ubuntu中,它看起来像这样:

 $ sudo apt-get install python-dev libldap2-dev libsasl2-dev libssl-dev
 $ sudo pip install python-ldap

15

Windows:我完全同意接受的答案,但是仔细阅读评论需要花一些时间才能弄清我需要的内容。我使用Bitnami在Windows上的Reviewboard上遇到了这个特定问题。为了给出Windows的答案,我使用了注释中提到的以下链接:

然后,执行以下命令

easy_install pip
pip install python_ldap-2.4.20-cp27-none_win32.whl

(因为我当时安装了python 2.7和32位安装程序)

easy_install python-ldap


12

“不要盲目删除/安装软件”

在基于Ubuntu / Debian的发行版中,您可以apt-file用来查找包含缺少的头文件的确切软件包的名称。

# do this once
sudo apt-get install apt-file
sudo apt-file update

$ apt-file search lber.h
libldap2-dev: /usr/include/lber.h

从输出可以看到apt-file search lber.h,您只需要安装软件包libldap2-dev

sudo apt-get install libldap2-dev

2
这真的应该是最重要的。这非常有帮助。
Bobort

是否有与此等效的CentoOS?
Tomislav Urban

11

对于那些在Alpine Linux上也缺少Iber.h的问题,例如,您尝试在Docker映像中尝试适应Alpine。

您要查找的软件包是:openldap-dev

所以跑

apk add openldap-dev

从版本3.3到Edge可用

适用于armhf和x86_64体系结构。


适用于基于高山的图像。谢谢。
rozacek

4

在openSUSE需要安装的软件包openldap2-develcyrus-sasl-develpython-devellibopenssl-devel

zypper install openldap2-devel cyrus-sasl-devel python-devel libopenssl-devel


4

在Fedora 22上,您需要执行以下操作:

sudo dnf install python-devel
sudo dnf install openldap-devel

对于F25仍然适用
Jerther


2

对于大多数系统,现在在python-ldap的文档的“安装”部分中提到了构建要求。

如果您的系统缺少任何内容(或系统完全丢失),请告知维护人员!(截至2018年,我是维护者,因此在此处进行评论应该足够。或者您可以发送拉取请求或邮件。)


谢谢,也许值得注意的是,如果您正在运行python3,则需要python3-devel,而不是python-devel。
杰米


2

要更正由于依赖而导致的错误,请安装python-ldap:Windows 7/10

下载whl文件

http://www.lfd.uci.edu/~gohlke/pythonlibs/#python-ldap

python 3.6适合

python_ldap-3.2.0-cp36-cp36m-win_amd64.whl

将文件部署到:

c:\ python36 \ Scripts \

用安装

python -m pip install python_ldap-3.2.0-cp36-cp36m-win_amd64.whl

1

在FreeBSD 11中:

pkg install openldap-client # for lber.h
pkg install cyrus-sasl # if you need sasl.h
pip install python-ldap

1

作为在Debian / Ubuntu上安装具有二进制依赖性[1]的Python软件包的一般解决方案:

sudo apt-get build-dep python-ldap
# installs system dependencies (but not the package itself)
pew workon my_virtualenv # enter your virtualenv
pip install python-ldap

您必须在Ubuntu和PyPI 检查Python软件包名称。在这种情况下,它们是相同的。

如果Python软件包不在Ubuntu仓库中,显然不起作用。

[1]我尝试pip install matplotlib在Ubuntu上学习了这个技巧。


1

对于高山码头工人

apk add openldap-dev

如果python版本是3以上,请尝试

pip install python3-ldap

0

如果您使用的是Windows计算机,则可以在此链接中找到“ python-ldap”轮,然后进行安装



By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.