我不能安装python-ldap

执行以下命令时:

sudo pip install python-ldap

我得到这个错误:

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

Modules/errors.h:8:致命错误:lber.h:没有这样的文件或目录

有什么解决办法吗?

321525 次浏览

python-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

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

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

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

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

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

pip-2.7 install python-ldap

在Ubuntu中,它是这样的:

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

在openSUSE上,你需要安装包openldap2-develcyrus-sasl-develpython-devellibopenssl-devel

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

在Fedora 22上,您需要这样做:

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

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

在Debian/Ubuntu上安装二进制依赖的Python包[1]的通用解决方案:

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上Python包的名称和PyPI。在这种情况下,它们是一样的。

显然,如果Python包不在Ubuntu回购中,则无法工作。

我在Ubuntu上尝试pip install matplotlib时学会了这个技巧。

在OSX上,你需要xcode命令行工具。只需打开一个终端并运行:

xcode-select --install

在FreeBSD 11中:

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

对于那些在Alpine Linux上丢失Iber.h的人,例如,在您试图适应Alpine的docker映像中。

您正在寻找的包是:openldap-dev

所以运行

apk add openldap-dev < /代码> < / p >

从3.3版本到Edge版本均可用

适用于armhf和x86_64架构。

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

在基于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

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

如果您的系统缺少任何东西(或您的系统完全缺少),请让维护者知道! (截至2018年,我是维护者,所以这里的评论应该足够了。或者你可以发送一个拉请求或邮件)

Python3不支持python-ldap。而不是安装ldap3。

如果你使用的是windows机器,你可以在链接中找到'python-ldap'轮,然后你可以安装它

对于那些使用alphine linux, Apk add openldap-dev

用于阿尔卑斯码头

apk add openldap-dev

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

pip install python3-ldap

修正由于安装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 \ \的脚本

使用

python -m pip install python_ldap-3.2.0-cp36-cp36m-win_amd64.whl
sudo apt-get install build-essential python3-dev python2.7-dev libldap2-dev libsasl2-dev slapd ldap-utils python-tox lcov valgrind

我在Windows上的安装有问题,所以解决方案之一是手动安装ldap包。

以下几个步骤:

  • 进入pyldap或/和python-ldap页面,下载最新版本*whl
  • 打开一个控制台,然后cd到你下载文件的地方,比如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安装合适的版本。使用以下命令:

# 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)

试一试:

ARCHFLAGS="-arch x86_64" pip3 install python-ldap

添加libzbar-dev也解决了我在构建码头工人时安装python-ldap的问题

完整命令变成:

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

对于ArchLinux/Manjaro,为我提供了以下命令:

yay libldap24

截至2021年12月,ldap库出现了一个奇怪的问题(至少在arch/manjaro中)。

在安装python-ldap(在' build wheel for python-ldap')时,我收到消息'ERROR: Failed Building wheel for python-ldap':

  /usr/bin/ld: cannot find -lldap_r
collect2: error: ld returned 1 exit status
error: command '/usr/bin/gcc' failed with exit code 1

这里提供了一个变通方法:https://github.com/python-ldap/python-ldap/issues/432#issuecomment-974799221

我引用:

作为一个变通方法,创建文件/usr/lib64/libldap_r.关于内容 输入(libldap。)。这种方法适用于所有使用GNU的系统 ld-compatible连接器。< / p >
# cat > /usr/lib64/libldap_r.so << EOF
INPUT ( libldap.so )
EOF

对FreeBSD 13.1的一个hack答案(是的,我知道这是最佳实践的深层南方,但我只是需要一个快速修复):

pkg install openldap24-client


cd /usr/local/include/python3.9
ln -s ../<all of the below> .


lber.h
lber_types.h
ldap.h
ldap_cdefs.h
ldap_features.h
ldap_schema.h
ldap_utf8.h
openldap.h
sasl


pip install python-ldap