执行以下命令时:

sudo pip install python-ldap

我得到这个错误:

在Modules/LDAPObject.c:9包含的文件中: Modules/errors.h:8:致命错误:lber.h:没有这样的文件或目录

有什么解决办法吗?


当前回答

添加libzbar-dev还解决了我在构建DOCKER时安装python-ldap的问题

完整命令变成:

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

其他回答

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

在安装python-ldap(在'Building 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链接器。 # cat > /usr/lib64/libldap_r.so << EOF 输入(libldap。) EOF

Python -ldap基于OpenLDAP,因此需要有开发文件(头文件)才能编译Python模块。如果你用的是Ubuntu,这个包叫做libldap2-dev。

Debian/Ubuntu:

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

RedHat /被久远。

sudo yum install python-devel openldap-devel

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

xcode-select --install

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

yay libldap24

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

在基于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文件搜索lber.h的输出中看到的,您只需要安装包libldap2-dev。

sudo apt-get install libldap2-dev