我无法安装python-ldap

Vac*_*ube 239 python module ldap

当我运行以下命令时:

sudo pip install python-ldap
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

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

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

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

And*_*Dog 367

网站称python-ldap基于OpenLDAP,因此您需要拥有开发文件(标题)才能编译Python模块.如果您使用的是Ubuntu,则会调用该程序包libldap2-dev.

Debian/Ubuntu:

sudo apt-get install libsasl2-dev python-dev libldap2-dev libssl-dev
Run Code Online (Sandbox Code Playgroud)

RedHat/CentOS:

sudo yum install python-devel openldap-devel
Run Code Online (Sandbox Code Playgroud)

  • @VacuumTube:缺少标题几乎总是缺少`-dev`包的标志(有时也称为`-devel`).只需执行`apt-cache search sasl | grep dev`你可能会找到合适的包 - 我猜它是`libsasl2-dev`. (67认同)
  • Windows用户的任何东西:(同样的错误,到目前为止没有解决方案 (5认同)
  • 您不必在Windows上从源代码编译.只需使用https://pypi.python.org/pypi/python-ldap/中的一个安装程序即可. (4认同)
  • 如果您使用的是 Python 3,请使用“python3-dev”而不是“python-dev”。 (4认同)
  • 此外,Windows用户可以提取安装到virtualenv中的.msi安装程序@Semmel:[如何在不编译的Windows上的python 2.7 virtualenv上安装python-ldap](http://stackoverflow.com/questions/15918188/how -to-install-python-ldap-on-a-python-2-7-virtualenv-on-windows-without-compili)(参见更新2) (3认同)
  • 感谢那.它进一步说它现在失败了sasl.h没有这样的文件或目录 (2认同)
  • 完整列表应该是 sudo apt-get install libsasl2-dev python-dev libldap2-dev libssl-dev (2认同)

jmu*_*jmu 143

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

sudo apt-get install -y python-dev libldap2-dev libsasl2-dev libssl-dev
Run Code Online (Sandbox Code Playgroud)


Ban*_*jer 71

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

sudo yum install python-devel
sudo yum install openldap-devel
Run Code Online (Sandbox Code Playgroud)

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

pip-2.7 install python-ldap
Run Code Online (Sandbox Code Playgroud)


Jef*_*eld 31

在Ubuntu中它看起来像这样:

 $ sudo apt-get install python-dev libldap2-dev libsasl2-dev libssl-dev
 $ sudo pip install python-ldap
Run Code Online (Sandbox Code Playgroud)


arc*_*l76 15

Windows:我完全同意接受的答案,但仔细阅读评论需要一段时间才能得到我需要的东西.我使用Bitnami在Windows上使用Reviewboard遇到了这个特定问题.为了给出Windows的答案,我使用了评论中提到的这个链接:

然后,执行以下命令

easy_install pip
pip install python_ldap-2.4.20-cp27-none_win32.whl
Run Code Online (Sandbox Code Playgroud)

(因为我有python 2.7和32位安装)

easy_install python-ldap
Run Code Online (Sandbox Code Playgroud)

  • /sf/ask/1054904441/ (2认同)

Gay*_*tti 9

"不要盲目删除/安装软件"

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

# do this once
sudo apt-get install apt-file
sudo apt-file update
Run Code Online (Sandbox Code Playgroud)
$ apt-file search lber.h
libldap2-dev: /usr/include/lber.h
Run Code Online (Sandbox Code Playgroud)

正如您从输出中看到的那样apt-file search lber.h,您只需安装该软件包即可libldap2-dev.

sudo apt-get install libldap2-dev
Run Code Online (Sandbox Code Playgroud)

  • 这确实应该在顶部。这非常有帮助。 (2认同)

Ilh*_*cas 7

对于那些在Alpine Linux上遇到Iber.h相同问题的人来说,在你试图适应Alpine的码头图像中.

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

所以跑

apk add openldap-dev

可从3.3版到Edge版

适用于armhf和x86_64架构.


chf*_*hfw 6

Fedora 22 上,您需要这样做:

sudo dnf install python-devel
sudo dnf install openldap-devel
Run Code Online (Sandbox Code Playgroud)


Mil*_*vić 6

我在 Windows 上安装时遇到问题,因此解决方案之一是ldap手动安装该软件包。

\n

几个步骤:

\n\n

当前版本pyldap是 2.4.45。在一个具体的例子中,安装将是:

\n
pip install .\\pyldap-2.4.45-cp37-cp37m-win_amd64.whl\n\n# Or\npip install .\\python_ldap\xe2\x80\x913.3.1\xe2\x80\x91cp39\xe2\x80\x91cp39\xe2\x80\x91win_amd64.whl\n
Run Code Online (Sandbox Code Playgroud)\n

输出:

\n
Installing collected packages: pyldap\nSuccessfully installed pyldap-2.4.45\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n
# If pip3 is the default pip alias for python-3\npip3 install python3-ldap\n\n# Otherwise\npip install python3-ldap\n
Run Code Online (Sandbox Code Playgroud)\n

这里还有 PiPy 包的链接以获取更多信息:python3-ldap 0.9.8.4

\n

或者

\n

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

\n
pip install ldap3\n
Run Code Online (Sandbox Code Playgroud)\n
from ldap3 import Server, Connection, SAFE_SYNC\n\nserver = Server(\'my_server\')\nconn = Connection(server, \'my_user\', \'my_password\', client_strategy=SAFE_SYNC, auto_bind=True)\n\nstatus, result, response, _ = conn.search(\'o=test\', \'(objectclass=*)\')\n# usually you don\'t need the original request (4th element of the returned tuple)\n
Run Code Online (Sandbox Code Playgroud)\n