No puedo instalar python-ldap


266

Cuando ejecuto el siguiente comando:

sudo pip install python-ldap

Me sale este error:

En el archivo incluido desde Módulos / LDAPObject.c: 9:

Módulos / errores.h: 8: error fatal: lber.h: No existe tal archivo o directorio

Alguna idea de cómo solucionar este problema?


1
Así es como lo arreglé para mí. Estoy en una instancia de Amazon EC2 y entré en mi usr/bin/directorio y noté que tenía, pip, pip-2.7, pip-3.6, and pip-pythonasí que lo hice sudo pip-3.6 install ldap3y funcionó para mí.
Kyle Bridenstine

1
@KyleBridenstine python-ldap no es lo mismo que ldap3.
David Mulder

Respuestas:


428

El pitón-LDAP se basa en OpenLDAP, por lo que es necesario tener los archivos de desarrollo (cabeceras) con el fin de compilar el módulo de Python. Si estás en Ubuntu, se llama al paquete libldap2-dev.

Debian / Ubuntu :

sudo apt-get install libsasl2-dev python-dev libldap2-dev libssl-dev

RedHat / CentOS :

sudo yum install python-devel openldap-devel

2
Gracias por eso. Tiene más que ahora está en su defecto con sasl.h No existe el fichero o directorio
VacuumTube

68
@VacuumTube: los encabezados faltantes son casi siempre una señal de -devpaquetes faltantes (a veces también nombrados -devel). Solo hazlo apt-cache search sasl | grep devy probablemente encontrarás el paquete correcto, supongo que es libsasl2-dev.
AndiDog

55
Cualquier cosa para usuarios de Windows :( Mismo error, no hay soluciones hasta ahora
Shailen

44
No tiene que compilar desde la fuente en Windows. Simplemente use uno de los instaladores de pypi.python.org/pypi/python-ldap .
Semmel

3
Además, los usuarios de Windows pueden extraer el instalador .msi @Semmel mencionado para instalar en un virtualenv: Cómo instalar python-ldap en un python 2.7 virtualenv en Windows sin compilar (ver actualización 2)
Dave

143

Para instalar python-ldap con éxito con pip, se necesitan las siguientes bibliotecas de desarrollo (nombres de paquetes tomados del entorno ubuntu):

sudo apt-get install -y python-dev libldap2-dev libsasl2-dev libssl-dev

Gracias. Esto es todo lo que necesitas. entonces corressudo pip install python-ldap
Sudipta Basak

71

En CentOS / RHEL 6, debe instalar:

sudo yum install python-devel
sudo yum install openldap-devel

y yum también se instalará cyrus-sasl-develcomo una dependencia. Entonces puedes ejecutar:

pip-2.7 install python-ldap

32

En Ubuntu se ve así:

 $ sudo apt-get install python-dev libldap2-dev libsasl2-dev libssl-dev
 $ sudo pip install python-ldap

15

Windows: estoy completamente de acuerdo con la respuesta aceptada, pero profundizar en los comentarios me llevó un tiempo llegar a la esencia de lo que necesitaba. Me encontré con este problema específico con Reviewboard en Windows usando Bitnami. Para dar una respuesta para Windows, utilicé este enlace mencionado en los comentarios:

Luego, ejecuté los siguientes comandos

easy_install pip
pip install python_ldap-2.4.20-cp27-none_win32.whl

(porque tenía Python 2.7 y una instalación de 32 bits en eso)

easy_install python-ldap


12

"No elimine ni instale software a ciegas"

En una distribución basada en Ubuntu / Debian, puede usar apt-filepara encontrar el nombre del paquete exacto que incluye el archivo de encabezado que falta.

# do this once
sudo apt-get install apt-file
sudo apt-file update

$ apt-file search lber.h
libldap2-dev: /usr/include/lber.h

Como puede ver en la salida de apt-file search lber.h, solo necesitaría instalar el paquete libldap2-dev.

sudo apt-get install libldap2-dev

2
Esto realmente debería estar en la parte superior. Es extremadamente útil
Bobort

¿Hay un CentoOS equivalente a esto?
Tomislav Urban

11

Para aquellos que tienen el mismo problema de perder Iber.h en Alpine Linux, en una imagen acoplada que está intentando adaptar a Alpine, por ejemplo.

El paquete que está buscando es: openldap-dev

Entonces corre

apk add openldap-dev

Disponible desde la versión 3.3 hasta Edge

Disponible para arquitecturas armhf y x86_64.


Bueno para imágenes alpinas. Gracias.
rozacek

4

En openSUSE es necesario instalar los paquetes openldap2-devel, cyrus-sasl-devel, python-devely libopenssl-devel.

zypper install openldap2-devel cyrus-sasl-devel python-devel libopenssl-devel


4

En Fedora 22, debe hacer esto en su lugar:

sudo dnf install python-devel
sudo dnf install openldap-devel

Sigue siendo cierto para F25
Jerther

2

En OSX, necesita las herramientas CLI de xcode. Simplemente abra una terminal y ejecute:

xcode-select --install

2

Para la mayoría de los sistemas , los requisitos de compilación ahora se mencionan en la documentación de python-ldap , en la sección "Instalación".

Si falta algo para su sistema (o si su sistema falta por completo), ¡informe al encargado de mantenimiento! (A partir de 2018, soy el mantenedor, por lo que un comentario aquí debería ser suficiente. O puede enviar una solicitud de extracción o correo).


Gracias, vale la pena señalar que si está ejecutando python3, necesitaría python3-devel, en lugar de python-devel.
Jamie


2

Para corregir el error debido a dependencias para instalar python-ldap: Windows 7/10

descargar el archivo whl

http://www.lfd.uci.edu/~gohlke/pythonlibs/#python-ldap .

Python 3.6 traje con

python_ldap-3.2.0-cp36-cp36m-win_amd64.whl

Implemente el archivo en:

c: \ python36 \ Scripts \

instalarlo con

python -m pip install python_ldap-3.2.0-cp36-cp36m-win_amd64.whl

1

En FreeBSD 11:

pkg install openldap-client # for lber.h
pkg install cyrus-sasl # if you need sasl.h
pip install python-ldap

1

Como solución general para instalar paquetes Python con dependencias binarias [1] en Debian / Ubuntu:

sudo apt-get build-dep python-ldap
# installs system dependencies (but not the package itself)
pew workon my_virtualenv # enter your virtualenv
pip install python-ldap

Deberá verificar el nombre de su paquete Python en Ubuntu versus PyPI. En este caso son lo mismo.

Obviamente no funciona si el paquete Python no está en los repositorios de Ubuntu.

[1] Aprendí este truco al intentar pip install matplotliben Ubuntu.


1

Para estibador alpino

apk add openldap-dev

si la versión de Python es 3 y superior, intente

pip install python3-ldap

0

Si está trabajando con máquinas Windows, puede encontrar la rueda 'python-ldap' en este enlace y luego puede instalarla



Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.