我无法安装Python-LDAP

349
当我运行以下命令时:
sudo pip install python-ldap

我遇到了这个错误:
在文件Modules/LDAPObject.c中包含的时候:
Modules/errors.h:8: 致命错误:lber.h:没有那个文件或目录
我该如何修复这个问题?
27个回答

622

python-ldap 是基于 OpenLDAP 的,因此您需要安装开发文件(头文件)才能编译 Python 模块。如果您使用的是 Ubuntu,该软件包名为 libldap2-dev

Debian/Ubuntu:

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

RedHat/CentOS:


红帽/ CentOS:
sudo yum install python-devel openldap-devel

5
谢谢您的请求。目前出现了更进一步的问题,现在出现了"sasl.h文件不存在"的错误。 - VacuumTube
75
@VacuumTube:缺失的头文件几乎总是缺少“-dev”包(有时也称为“-devel”)。只需执行“apt-cache search sasl | grep dev”,您可能会找到正确的软件包 - 我猜测它是“libsasl2-dev”。 - AndiDog
7
有什么适用于Windows用户的解决方案吗?:( 目前还没有解决方案,出现了相同的错误。 - Shailen
5
在Windows操作系统上,你不必从源代码编译Python-ldap。只需使用https://pypi.python.org/pypi/python-ldap/中的安装程序之一即可。 - Semmel
4
如果你在使用Python 3,那么请使用python3-dev代替python-dev - phoenix
显示剩余12条评论

157

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

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

74

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

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

并且yum也将安装cyrus-sasl-devel作为一个依赖项。然后你可以运行:

并且yum也将安装cyrus-sasl-devel作为一个依赖项。然后你可以运行:

pip-2.7 install python-ldap

49
“不要盲目地删除/安装软件”
在基于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

3
这条内容应该放在最上面,非常有帮助。 - Bobort
这个有 CentOS 的等价物吗? - Tomislav Urban

35
在Ubuntu中,它看起来是这样的:
sudo apt-get install python-dev libldap2-dev libsasl2-dev libssl-dev
sudo pip install python-ldap

17

对于Windows,我完全同意接受的答案,但是浏览了一段时间的评论才找到我需要的核心内容。我在使用Bitnami上的Reviewboard时遇到了这个具体问题。因此,为了回答Windows的问题,我使用了评论中提到的此链接:

然后,执行以下命令

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

(因为我之前安装的是Python 2.7和32位版本)

easy_install python-ldap

2
https://dev59.com/FG7Xa4cB1Zd3GeqPu-Vv - lofidevops

14
对于那些在Alpine Linux上遇到缺少Iber.h的问题,并且你正在尝试将Docker镜像适配到Alpine的人来说。
你需要的软件包是:openldap-dev
所以运行以下命令:
apk add openldap-dev

从版本3.3起可用,直到Edge

适用于armhf和x86_64架构。


适用于基于Alpine的镜像。谢谢。 - rozacek

6
在Fedora 22上,你需要执行以下操作:
sudo dnf install python-devel
sudo dnf install openldap-devel

仍然适用于 F25。 - Jerther

6

我在Windows的安装过程中遇到了问题,其中一种解决方案是手动安装ldap包。

具体步骤如下:

  • 前往网页 pyldap 和/或 python-ldap 页面,下载最新版本的*whl文件。
  • 打开控制台并进入下载文件所在位置,例如some-package.whl,然后使用以下命令:
pip install some-package.whl

pyldap 的当前版本是 2.4.45。具体安装示例如下:

pip install .\pyldap-2.4.45-cp37-cp37m-win_amd64.whl

# or
pip install .\python_ldap‑3.3.1‑cp39‑cp39‑win_amd64.whl

输出:

Installing collected packages: pyldap
Successfully installed pyldap-2.4.45

编辑

您可以使用以下命令安装适用于Python-3.X的正确版本:

# if pip3 is the default pip alias for python-3
pip3 install python3-ldap

# otherwise 
pip install python3-ldap

此外,这里是PiPy包的链接,以获取更多信息:python3-ldap 0.9.8.4

或者

ldap3是一个严格遵循RFC 4510标准的LDAP V3纯Python客户端库。同一代码库可以在Python 2、Python 3、PyPy和PyPy3中运行:https://github.com/cannatag/ldap3

pip install ldap3

from ldap3 import Server, Connection, SAFE_SYNC

server = Server('my_server')
conn = Connection(server, 'my_user', 'my_password', client_strategy=SAFE_SYNC, auto_bind=True)

status, result, response, _ = conn.search('o=test', '(objectclass=*)') 
# usually you don't need the original request (4th element of the returned tuple)

4
为了解决由于依赖关系而安装python-ldap时出现的错误:Windows 7Windows 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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接