Python ldap macOS – ValueError: error de opción

Estoy tratando de configurar python-ldap en macOS Sierra. Cuando bash usar el módulo (que funciona en mi Live Env ejecutándose en CentOS) obtengo el siguiente error, que al buscar parece ser algo que ver con la instalación de OpenLDAP o python-ldap en macOS, pero aún no he Encuentra un artículo que explique cómo solucionarlo.

Hasta ahora he instalado OpenLDAP a través de homebrew que no ha solucionado el problema:

error:

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 

He instalado Openldap a través de brew como por debajo de

 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. 

y he instalado python-ldap con pip

 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 

La solución para mí fue que necesitaba incluir las bibliotecas openldap basadas en la elaboración al hacer el pip install python-ldap

La información que necesitarás se puede encontrar haciendo brew info openldap donde dice algo como:

 For compilers to find this software you may need to set: LDFLAGS: -L/usr/local/brew/opt/openldap/lib CPPFLAGS: -I/usr/local/brew/opt/openldap/include 

Mi instalación de openldap está en /usr/local/brew/opt/openldap/ por lo que esto requiere un comando como:

 LDFLAGS="-L/usr/local/brew/opt/openldap/lib" CPPFLAGS="-I/usr/local/brew/opt/openldap/include" pip install python-ldap 

Intente desinstalar python-ldap ( pip uninstall python-ldap ) y luego ejecute el brew info openldap y use sus rutas específicas para abrir lib e incluir el directorio en el comando anterior

Nota: También tuve un problema con mi comstackdor Clang al no encontrar el SDK de MacOS sasl.h, pero no sé si solo era yo. Esto se resolvió agregando --global-option=build_ext --global-option="-I$(xcrun --show-sdk-path)/usr/include/sasl" a la línea de comando anterior

Instalé python-ldap (versión 2.3.10_3) usando MacPorts en macOS Sierra 10.12.4 con:

 sudo port install py27-ldap 

esto también eliminó la dependencia de OpenLDAP (versión 2.4.44_2).

Puedo ejecutar el código:

 import ldap ldap.set_option(ldap.OPT_X_TLS_CACERTFILE,'cacert-2017-01-18.pem') 

sin errores (archivo de certificado CA de https://curl.haxx.se/ca/cacert-2017-01-18.pem )

¿Qué pasos siguiste para instalar OpenLDAP y python-ldap?

Editar:

Creo que encontré algo relevante , ¿puedes probar el código de prueba anterior con el archivo cert que vinculé?

Sospecho un error de formato de permiso / .pem