Django项目无法安装python-ldap依赖解决方案

最近工作中安排了一个Python web项目,使用Pycharm从git拉取代码后,配置号Python的解释器和pip后,Pycharm自动下载安装项目所需的依赖,但是有一个依赖django-auth-ldap==4.1.0安装始终失败,最初的异常信息提示是:Microsoft Visual C++ 14.0 or greater is required,Get it with "Microsoft C++ Build Tools": https://visualstudio.microsoft.com/visual-cpp-build-tools/

直接根据提示去微软官网下载相关c++构建工具

,然后使用这个工具去安装c++桌面开发工具(只选择C++桌面开发就行了),默认选中的组件安装就可以了,安装好了,再次在终端执行pip install django-auth-ldap==4.1.0 仍然还是会报错,

3.5.2->Django>=2.2->django-auth-ldap==4.1.0) (4.11.0)

Building wheels for collected packages: python-ldap

Building wheel for python-ldap (PEP 517): started

Building wheel for python-ldap (PEP 517): finished with status 'error'

Failed to build python-ldap

根据提示语:是构建python-ldap的时候失败了,说明安装 django-auth-ldap是依赖python-ldap的,所以单独执行 pip install python-ldap

Collecting django-auth-ldap==4.1.0

Using cached django_auth_ldap-4.1.0-py3-none-any.whl (20 kB)

Collecting python-ldap>=3.1

根据提示,python-ldap的版本大于3.1就符合要求,但是 单独执行 pip install python-ldap ,仍然报错;粘贴下最关键的错误信息:

fatal error C1083: 无法打开包括文件: "lber.h": No such file or directory

error: command 'D:\\Program Files (x86)\\Microsoft Visual Studio\\2022\\BuildTools\\VC\\Tools\\MSVC\\14.39.33519\\bin\\HostX86\\x64\\cl.exe' failed with exit code 2


ERROR: Failed building wheel for python-ldap

ERROR: Could not build wheels for python-ldap which use PEP 517 and cannot be installed directly

重点关注这个lber.h ;经过查询,这个文件是ldap协议的头部,在相关文件中没有找到lber.h的声明,所以编译报错;

接下来比较坑的地方来了,去python-ldap官网(Installing python-ldap --- python-ldap 3.4.3 documentation)和python-ldap的官方github旧仓库(Python 3.6.1 error Modules/errors.h:8:18: fatal error: lber.h: No such file or directory · Issue #91 · pyldap/pyldap · GitHub)去看这个问题的相关说明;python-ldap的依赖在windows系统上是无法正常安装的,官方给的解决方法就是去下载离线whl,给了一个离线whl下载网站(https://www.lfd.uci.edu/\~gohlke/pythonlibs/),大家也不用去访问这个网站了,这个实验室网站已经移除whl下载功能了,访问也是page not found,而且国内的大学镜像网站比如清华的(Simple Index),目前也是404状态,不知道为啥全都不让下载这些离线已经构建好的whl文件了,所以真的没有办法,最后只能在网上购买了一个whl文件

这个文件分享不了(csdn的限制,分享失败,如果需要可以私信我或者文章评论留下邮箱,看到后发送),最后反正是花了十来块钱买了一个

与windows系统匹配的已经构建好的whl文件,然后使用powershell在该目录下执行命令:

bash 复制代码
pip install python_ldap-3.3.1-cp38-cp38-win_amd64.whl

然后就可以成功安装python_ldap-3.3.1-cp38-cp38-win_amd64.whl,3.3.1是python_ldap的版本,cp38表示python的版本3.8,后边的win表示windows系统,所以为了满足这个whl条件,我又额外安装了python3.8版本,执行上边的命令后,就会安装python-ldap成功,python-ldap安装成功,就可以安装django_auth_ldap==4.1.0了,我直接去django_auth_ldap官网下载的,所以再次执行:

bash 复制代码
pip install django_auth_ldap-4.1.0-py3-none-any.whl

会执行成功,没有异常信息;我把pip也更新到了最新版本

这时,项目中还是提示缺少这个依赖,让安装,这时因为我安装python的时候,使用的是python的默认设置,python默认安装依赖在这个路径:

是在系统盘C盘的,但是我的项目是在E盘放的,创建的venv(Python虚拟环境)也是在项目下边,所以项目下虚拟环境的site-package下并没有安装上;其实很简单,直接将C盘下的site-package下新增的文件全部复制到项目下的venv

复制完成就ok,Pycharm就不会提示缺少依赖了,requirements.txt文件中也不会有依赖爆红了!至此成功解决这个依赖问题

如果是linux系统则只需要安装对应的ldap协议开发工具即可

即:centos系统:

bash 复制代码
yum install openldap-devel python-devel

以及如果是alpine系统:

bash 复制代码
apk add build-base openldap-dev python3-dev

debian系统:

bash 复制代码
apt-get install build-essential python3-dev \
    libldap2-dev libsasl2-dev slapd ldap-utils tox \
    lcov valgrind
相关推荐
冯仙笙6 分钟前
统一支付入口集成六种支付方式
后端
无双_Joney18 分钟前
[更新迭代 - 1] Nestjs 在24年底更新了啥?(功能篇)
前端·后端·nestjs
数据智能老司机23 分钟前
精通 Python 设计模式——并发与异步模式
python·设计模式·编程语言
数据智能老司机24 分钟前
精通 Python 设计模式——测试模式
python·设计模式·架构
数据智能老司机24 分钟前
精通 Python 设计模式——性能模式
python·设计模式·架构
泉城老铁26 分钟前
idea 优化卡顿
前端·后端·敏捷开发
福大大架构师每日一题32 分钟前
RustDesk 1.4.2 版本发布:新增增量文件传输与光标显示功能
后端
LH_R33 分钟前
OneTerm开源堡垒机实战(四):访问授权与安全管控
运维·后端·安全
poemyang34 分钟前
技术圈的“绯闻女孩”:Gossip是如何把八卦秘密传遍全网的?
后端·面试·架构
c8i34 分钟前
drf初步梳理
python·django