【发布时间】:2017-04-10 16:25:30
【问题描述】:
我正在尝试在 macOS Sierra 上设置 python-ldap。 当我尝试使用该模块时(它适用于我在 CentOS 上运行的实时环境) 我收到以下错误,在搜索时似乎与在 macOS 上安装 OpenLDAP 或 python-ldap 有关,但我还没有找到解释如何修复它的文章。
到目前为止,我已经通过自制软件安装了 OpenLDAP,但尚未解决问题:
错误:
Traceback (most recent call last):
File "/usr/local/lib/python2.7/site-packages/django/core/handlers/exception.py", line 42, in inner
response = get_response(request)
File "/usr/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 249, in _legacy_get_response
response = self._get_response(request)
File "/usr/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 187, in _get_response
response = self.process_exception_by_middleware(e, request)
File "/usr/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 185, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/usr/local/lib/python2.7/site-packages/django/contrib/auth/views.py", line 47, in inner
return func(*args, **kwargs)
File "/usr/local/lib/python2.7/site-packages/django/views/decorators/debug.py", line 76, in sensitive_post_parameters_wrapper
return view(request, *args, **kwargs)
File "/usr/local/lib/python2.7/site-packages/django/utils/decorators.py", line 149, in _wrapped_view
response = view_func(request, *args, **kwargs)
File "/usr/local/lib/python2.7/site-packages/django/views/decorators/cache.py", line 57, in _wrapped_view_func
response = view_func(request, *args, **kwargs)
File "/usr/local/lib/python2.7/site-packages/django/contrib/auth/views.py", line 81, in login
if form.is_valid():
File "/usr/local/lib/python2.7/site-packages/django/forms/forms.py", line 169, in is_valid
return self.is_bound and not self.errors
File "/usr/local/lib/python2.7/site-packages/django/forms/forms.py", line 161, in errors
self.full_clean()
File "/usr/local/lib/python2.7/site-packages/django/forms/forms.py", line 371, in full_clean
self._clean_form()
File "/usr/local/lib/python2.7/site-packages/django/forms/forms.py", line 398, in _clean_form
cleaned_data = self.clean()
File "/usr/local/lib/python2.7/site-packages/django/contrib/auth/forms.py", line 191, in clean
self.user_cache = authenticate(username=username, password=password)
File "/usr/local/lib/python2.7/site-packages/django/contrib/auth/__init__.py", line 74, in authenticate
user = backend.authenticate(**credentials)
File "/itapp/itapp/backend.py", line 39, in authenticate
ldap.set_option(ldap.OPT_X_TLS_CACERTFILE,settings.AD_CERT_FILE)
File "/usr/local/lib/python2.7/site-packages/ldap/functions.py", line 135, in set_option
return _ldap_function_call(None,_ldap.set_option,option,invalue)
File "/usr/local/lib/python2.7/site-packages/ldap/functions.py", line 66, in _ldap_function_call
result = func(*args,**kwargs)
ValueError: option error
我已经按照下面的方法通过 brew 安装了 openldap
alexs-mbp:~ alex$ brew install openldap
Warning: openldap is a keg-only and another version is linked to opt.
Use `brew install --force` if you want to install this version
alexs-mbp:~ alex$ brew install openldap --force
Warning: openldap-2.4.44 already installed, it's just not linked.
我已经用 pip 安装了 python-ldap
alexs-mbp:~ alex$ sudo pip install python-ldap
The directory '/Users/alex/Library/Caches/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
The directory '/Users/alex/Library/Caches/pip' or its parent directory is not owned by the current user and caching wheels has been disabled. check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
Requirement already satisfied: python-ldap in /usr/local/lib/python2.7/site-packages
Requirement already satisfied: setuptools in /usr/local/lib/python2.7/site-packages (from python-ldap
【问题讨论】:
-
看起来这可能是 openldap 的自制版本的问题 - 请参阅 thread.gmane.org/gmane.comp.python.ldap/1660
-
sourceforge.net/p/python-ldap/bugs/65 看起来是这样修复的
-
已针对其特定环境进行了修复。不过,您可能需要考虑解决方法。
-
我不确定如何做答案中的问题
-
我不是 Mac 专家,但这里似乎介绍了插入证书的方式 - apple.stackexchange.com/questions/80623/…