关于python3-ldap与ldap3的混淆及导入报错问题咨询
关于RHEL8中python3-ldap与ldap3的混淆问题解答
确实存在两个完全不同的「python3-ldap」
- 其一:RHEL8系统仓库中的
python3-ldapRPM包,本质是经典python-ldap库的Python3适配版本,它的模块导入名是ldap,和你旧应用依赖的ldap3没有任何关系,这个包是给需要调用传统LDAP客户端API的代码用的。 - 其二:曾经在PyPI上发布的
python3-ldapPython包,也就是你在RHEL7的Python2环境中使用的那个库,后来为了避免和前者混淆,改名为ldap3。这个库有自己独立的API设计,导入名是ldap3。
- 其一:RHEL8系统仓库中的
为什么yum安装
python3-ldap后无法导入ldap3?
你通过yum安装的是前者(RPM包的python3-ldap),它对应的模块名是ldap,而非ldap3,自然会触发ModuleNotFoundError。你的旧应用依赖的是后者(现已改名为ldap3的库),所以必须安装ldap3才能匹配。你最后用源码安装的解决方案是正确的
直接安装ldap3的源码包,对应的就是你旧应用依赖的那个库,因此可以正常导入使用。
内容的提问来源于stack exchange,提问作者jstack100
相关产品推荐
相关产品推荐

