【问题标题】:Python ldap AttributeErrorPython ldap 属性错误
【发布时间】:2010-03-24 04:22:20
【问题描述】:

我有一个 python 错误 AttributeError: 'module' object has no attribute 'initialize' 我在 Solaris 10 UNIX 上运行 Python 2.6.2,最近安装了 pythonldap 2.3.9。脚本很基础,只有这两行。谁能告诉我为什么??回溯错误如下。

#!/usr/local/bin/python

import ldap, sys

con = ldap.initialize('ldap://localhost')

Traceback(最近一次调用最后一次): 文件“./myldap.py”,第 5 行,在 con = ldap.initialize('ldap://localhost') AttributeError:“模块”对象没有“初始化”属性

问候, 珍妮

【问题讨论】:

  • Python 的首选 shebang 行是 !/usr/local/env python,它可以在命令行上运行任何“python”。

标签: python openldap


【解决方案1】:

您是否在当前目录 ldap.py 中命名了一个文件,该文件隐藏了您想要的文件?

【讨论】:

  • 令人印象深刻。在不到 2 分钟的时间内快速而有用的回复!是的,我确实做到了,我现在重命名了该文件并出现了另一个错误。 Traceback(最近一次调用最后):文件“./myldap.py”,第 3 行,在 中导入 ldap 文件“/usr/local/lib/python2.6/site-packages/ldap/__init__.py”,第 22 行,在 from _ldap import * ImportError: ld.so.1: python: fatal: libsasl2.so.2: open failed: No such file or directory
  • 宾果游戏!检查 ldap 模块的安装。似乎它可能被吓坏了。欢迎来到!
  • 您似乎遇到了 C 模块 ldap 需要调用的问题。您使用什么操作系统?你是如何安装 python-ldap 的?
  • 其实不是我自己安装的,而是工程师给我转发了这些细节。 Solaris 10. Python 和 Pythonldap 是从 Sunfreeware 站点安装的——这两个软件包都专门用于 Solaris 系统。 Python:- SMCpython 2.6.2 Pyhtonldap:- SMCpyldap 2.3.9
  • @jenny:你应该选择这个作为答案,因为它是你问题的解决方案。这将帮助其他人快速得到他们的答案。谢谢 ! .它解决了我的问题
【解决方案2】:

很多人都给出了更复杂的解决方案...简单地说,ldap模块的pip安装不起作用。您需要从 apt 或 yum 安装 python-ldap 包。请注意,deb 包现在被命名为 python3-ldap,在弃用 python 2 之后。

【讨论】:

  • 好像是这样。
  • 这既真实又可怕
  • 这并不完全正确:“3.1 版更改:已删除不推荐使用的函数 ldap.init() 和 ldap.open()。”你应该 ldap.initialize
【解决方案3】:

判断您要导入的ldap 是否正确的一种简单方法是打印ldap.__file__,它会打印模块文件的完整路径(通常是“.pyc”)。如果它不是安装在您期望的位置,这就是您的问题,正如Mike Graham 建议的那样。

【讨论】:

  • 我犯了这个错误,这个答案帮助我发现即使我已将我的 ldap.py 重命名为其他名称,文件夹中仍然有一个 ldap.pyc
【解决方案4】:

我成功建立了 ldap 连接。如何去:

1.我有 python v 3.7.2

2.Install python-ldap:为此我尝试了“pip install python-ldap”,但没有成功 在 Windows 机器上对我来说,所以我使用下面的替代方法。

3.安装ldap到这里:https://www.lfd.uci.edu/~gohlke/pythonlibs/#python-ldap 并下载 python_ldap‑3.1.0‑cp37‑cp37m‑win_amd64.whl

4.现在移动到下载目录并运行“pip install python_ldap‑3.1.0‑cp37‑cp37m‑win_amd64.whl"

  1. 现在打开 python shell 并检查“import ldap”,如果没有出现错误则表示您已完成。

这是示例代码:

#Resource of code :https://gist.github.com/ibeex/1288159
import ldap
def check_credentials(username, password):

   """Verifies credentials for username and password.
   Returns None on success or a string describing the error on failure
   # Adapt to your needs
   """
   LDAP_SERVER = 'xxx'
   # fully qualified AD user name
   LDAP_USERNAME = '%s@spi.com' % username
   # your password
   LDAP_PASSWORD = password
   base_dn = 'DC=spi,DC=com'
   ldap_filter = 'userPrincipalName=%s@spi.com' % username
   attrs = ['memberOf']
   try:
       # build a client
       ldap_client = ldap.initialize(LDAP_SERVER)
       # perform a synchronous bind
       ldap_client.set_option(ldap.OPT_REFERRALS,0)
       ldap_client.simple_bind_s(LDAP_USERNAME, LDAP_PASSWORD)
   except ldap.INVALID_CREDENTIALS:
     #print("wron")
     ldap_client.unbind()
     return 'Wrong username or password'
   except ldap.SERVER_DOWN:
       #print("down")
       return 'AD server not awailable'
   # all is well
   # get all user groups and store it in cerrypy session for future use
   ab = str(ldap_client.search_s(base_dn,
                   ldap.SCOPE_SUBTREE, ldap_filter, attrs)[0][1]['memberOf'])
   #print("ab"+ab)             
   ldap_client.unbind()
   return 'success'
if __name__ == "__main__":
    u="chirag"
    p="secred"
    print(check_credentials(u,p))   

【讨论】:

    【解决方案5】:

    如果您以某种方式从 sos/plugins/ 中获取“ldap.py”而不是 ldap 包本身,则会出现该错误。确保实际安装了“python-ldap”包...

    【讨论】:

      【解决方案6】:

      我猜你已经安装了“pip install ldap”!在此模块中“初始化”或“打开”不存在。 通过“pip uninstall ldap”卸载该“ldap”,然后尝试“yum install python-ldap”。并运行相同的代码。 打印“con”。

      【讨论】:

      • ldap 不是 pip 可安装模块,您需要 python-ldap。 @Arcsector 也提供了更完整的答案
      【解决方案7】:

      open 在 python-ldap 3.x 版本中不再存在。

      我通过强制安装旧版本来修复它:

      pip install python-ldap==2.4.13
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-03-21
        • 2013-07-01
        • 2011-10-12
        • 1970-01-01
        • 2018-03-30
        • 1970-01-01
        • 2016-05-01
        • 2021-07-24
        相关资源
        最近更新 更多