【问题标题】:I can't install python-ldap我无法安装 python-ldap
【发布时间】:2011-06-13 16:44:42
【问题描述】:

当我运行以下命令时:

sudo pip install python-ldap

我收到此错误:

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

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

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

【问题讨论】:

    标签: python module ldap


    【解决方案1】:

    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
    

    【讨论】:

    • 谢谢。它更进一步,现在由于 sasl.h 没有这样的文件或目录而失败
    • @VacuumTube:缺少标头几乎总是表明缺少-dev 包(有时也称为-devel)。只需执行apt-cache search sasl | grep dev,您可能会找到合适的包 - 我猜它是libsasl2-dev
    • 适用于 windows 用户的任何东西 :( 同样的错误,目前没有解决方案
    • 您不必在 Windows 上从源代码编译。只需使用来自pypi.python.org/pypi/python-ldap 的安装程序之一。
    • 另外,Windows 用户可以提取提到的 .msi 安装程序 @Semmel 安装到 virtualenv 中:How to install python-ldap on a python 2.7 virtualenv on windows without compiling(参见更新 2)
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

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

      并且 yum 还将安装 cyrus-sasl-devel 作为依赖项。然后就可以运行了:

      pip-2.7 install python-ldap
      

      【讨论】:

        【解决方案4】:

        在 Ubuntu 中是这样的:

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

        【讨论】:

          【解决方案5】:

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

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

          【讨论】:

          • 这确实应该在顶部。这非常有帮助。
          • 有与此等效的 CentoOS 吗?
          【解决方案6】:

          Windows:我完全同意接受的答案,但是挖掘 cmets 需要一段时间才能得到我需要的内容。我使用 Bitnami 在 Windows 上的 Reviewboard 上遇到了这个特定问题。然后为了给windows一个答案,我使用了cmets中提到的这个链接:

          然后,执行以下命令

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

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

          easy_install python-ldap
          
          【解决方案7】:

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

          你要找的包是:openldap-dev

          所以跑

          apk add openldap-dev

          从 3.3 版到 Edge 均可用

          适用于 armhf 和 x86_64 架构。

          【讨论】:

          • 适用于基于 alpine 的图像。谢谢。
          【解决方案8】:

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

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

          【讨论】:

          • 仍然适用于 F25
          【解决方案9】:

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

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

          【讨论】:

            【解决方案10】:

            对于高山码头

            apk add openldap-dev
            

            如果python版本是3以上试试

            pip install python3-ldap
            

            【讨论】:

              【解决方案11】:
              sudo apt-get install build-essential python3-dev python2.7-dev libldap2-dev libsasl2-dev slapd ldap-utils python-tox lcov valgrind
              

              【讨论】:

                【解决方案12】:

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

                【讨论】:

                  【解决方案13】:

                  我在 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.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)
                  

                  【讨论】:

                    【解决方案14】:

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

                    xcode-select --install
                    

                    【讨论】:

                      【解决方案15】:

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

                      如果您的系统缺少任何东西(或您的系统完全丢失),请告知维护者! (截至 2018 年,我是维护者,所以在这里发表评论就足够了。或者您可以发送拉取请求或邮件。)

                      【讨论】:

                      • 谢谢,可能值得注意的是,如果您正在运行 python3,则需要 python3-devel,而不是 python-devel。
                      【解决方案16】:

                      纠正由于安装 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
                      

                      【讨论】:

                        【解决方案17】:

                        在 FreeBSD 11 中:

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

                        【讨论】:

                          【解决方案18】:

                          作为在 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
                          

                          您必须检查 name of your Python package on Ubuntu 与 PyPI。在这种情况下,它们是相同的。

                          如果 Python 包不在 Ubuntu 存储库中,则显然不起作用。

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

                          【讨论】:

                            【解决方案19】:

                            对于我来说 ArchLinux/Manjaro 帮助了以下命令:

                            yay libldap24
                            

                            【讨论】:

                            • 它在 Manjaro 上工作,谢谢
                            【解决方案20】:

                            如果你使用的是windows机器,你可以在Link找到'python-ldap'轮子然后你就可以安装它了

                            【讨论】:

                              【解决方案21】:

                              对于那些正在使用 alphine linux 的人, apk 添加 openldap-dev

                              【讨论】:

                                【解决方案22】:

                                尝试:

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

                                【讨论】:

                                • 你能解释一下这是做什么的吗?
                                【解决方案23】:

                                还添加 libzbar-dev 解决了我在构建 DOCKER

                                时安装 python-ldap 的问题

                                完整的命令变成:

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

                                【讨论】:

                                  【解决方案24】:

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

                                  在安装python-ldap 时(在'python-ldap 的构建轮')我收到消息'错误: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.so 输入(libldap.so)。该方法适用于所有使用 GNU 的系统 ld 兼容的链接器。

                                  # cat > /usr/lib64/libldap_r.so << EOF
                                  INPUT ( libldap.so )
                                  EOF
                                  

                                  【讨论】:

                                    猜你喜欢
                                    • 2019-11-30
                                    • 2014-01-12
                                    • 2022-06-21
                                    • 2019-05-07
                                    • 1970-01-01
                                    • 1970-01-01
                                    • 1970-01-01
                                    • 1970-01-01
                                    • 1970-01-01
                                    相关资源
                                    最近更新 更多