CentOS安装python_ldap和PIL

1.安装django_auth_ldap需要依赖python_ldap,  openldap

     CentOS要实现openLDAP必须先安装openldap,  openldap-servers,  openldap-clients三个包。第一个默认已经安装好了。

     默认easy_install或者pip install很容易遇到这个错误


/usr/include/sasl/sasl.h:349: 警告:函数声明不是一个原型
Modules/ldapcontrol.c: In function ‘encode_assertion_control’:
Modules/ldapcontrol.c:352: 警告:隐式声明函数 ‘ldap_create_assertion_control_value’
Modules/constants.c: In function ‘LDAPinit_constants’:
Modules/constants.c:155: 错误:‘LDAP_OPT_DIAGNOSTIC_MESSAGE’ 未声明 (在此函数内第一次使用)
Modules/constants.c:155: 错误:(即使在一个函数内多次出现,每个未声明的标识符在其
Modules/constants.c:155: 错误:所在的函数内只报告一次。)
Modules/constants.c:365: 错误:‘LDAP_CONTROL_RELAX’ 未声明 (在此函数内第一次使用)
error: Setup script exited with error: command 'gcc' failed with exit status 1

原因是版本不兼容,centos默认装了个2.3的。以下指令好使

yum install openldap
yum install openldap24-libs
yum install openldap-clients
yum install openldap-devel
yum install openssl-devel
yum install openldap24-libs-devel
export CPATH=/usr/include/openldap24
export LIBRARY_PATH=/usr/lib/openldap24/     (以上为安装openldap)
pip install python-ldap

pip install django_auth_django(依赖python_ldap)

验证OK了没:

验证Python_ldap(Python交互模式,命令行下)

>>>import ldap
>>>conn = ldap.initialize("ldap://ip:port")    ip  port写自己的实际配置
>>>conn.protocol_version = 3
>>>conn.set_option(ldap.OPT_REFERRALS, 0)
>>>conn.simple_bind_s('账号', '密码')

验证django_auth_ldap安装好并且配置好了(前提是 已经对着 django_auth_ldap文档配置了django  settings文件)

python manage.py shell

>>>from django_auth_ldap.backend import LDAPBackend  #import 失败说明没有安装好

>>>ldapobj = LDAPBackend()

>>>ldapobj.authenticate('账号','密码')

<class 'django.contrib.auth.models.User'>如果报错,,没有配置好,认证失败。跟着错误提示改改,django_auth_ldap就配好了


2.integrate django-auth-ldap

  • An simple basic example config:<配置样例,doc:https://pythonhosted.org/django-auth-ldap/authentication.html>每家公司IT习惯不同,配置略有差异,比如有的用uid,有的用sAMAccountName.参考doc以及LDAP术语说明文档,修修改改

    AUTHENTICATION_BACKENDS = (
        'django_auth_ldap.backend.LDAPBackend',
        'django.contrib.auth.backends.ModelBackend',
    )
    
    AUTH_LDAP_GLOBAL_OPTIONS = {
        ldap.OPT_X_TLS_REQUIRE_CERT: False, # 不带证书
        ldap.OPT_REFERRALS: 0,
    }
    
    AUTH_LDAP_SERVER_URI = "ldap://192.168.1.14:389"
    AUTH_LDAP_START_TLS = False
    AUTH_LDAP_BIND_AS_AUTHENTICATING_USER = True
    AUTH_LDAP_ALWAYS_UPDATE_USER = True
    
    #增加LDAP的日志,否则调试无法看到LDAP相关错误信息
    logger = logging.getLogger('django_auth_ldap')
    logger.addHandler(logging.StreamHandler())
    logger.setLevel(logging.DEBUG)
    
    #用户查询
    AUTH_LDAP_BIND_DN = "luodh@xxx.com"
    AUTH_LDAP_BIND_PASSWORD = "password here"
    AUTH_LDAP_USER_SEARCH = LDAPSearch("cn=users,dc=xxx,dc=com", ldap.SCOPE_SUBTREE, "(sAMAccountName=%(user)s)")
    
    #用户查询第二种方式:(未使用成功)
    #AUTH_LDAP_USER_DN_TEMPLATE = "sAMAccountName=%(user)s,cn=users,dc=xxx,dc=com"
    
    #从LDAP 读入用户属性
    AUTH_LDAP_USER_ATTR_MAP = {
        "first_name": "givenName",
        "last_name": "sn",
        "email": "mail",
    }


3.安装PIL

1.windows就不说了   报错 error: Unable to find vcvarsall.bat

要么安装  VS使用其编译器,还得改改别的文件,麻烦,几个G懒得下

要么直接安装Pillow,找exe版。http://www.lfd.uci.edu/~gohlke/pythonlibs/

不要安装exe版本的pil,  64位系统不好使。人品好的话,exe版本的pil也行。既然都windows了   就pillow得了


2,Centos

安装完啥错不报,使用时报错  The _imaging C module is not installed

缺少devel

安装PIL  PIllow结束时注意看总结 “Summary“,写的很清楚哪些可用哪些不可用,不要以为没报错出了一大堆打印信息就算安装好了。

yum install freetype-devel libjpeg-devel lib-devel
pip uninstall pil Pillow
pip install pil pillow

pil   pillow不是必须一起装,上述命令中不需要哪个 就不写哪个,上述命令仅仅简写  一次卸载 或 安装2个。


验证Pillow

from PIL import Image

验证pil

import Image

不报错算安装OK






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值