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?

Tubo vacío
fuente
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
AndiDog
fuente
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
jmu
fuente
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
Banjer
fuente
32

En Ubuntu se ve así:

 $ sudo apt-get install python-dev libldap2-dev libsasl2-dev libssl-dev
 $ sudo pip install python-ldap
Jeff Sheffield
fuente
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
archangel76
fuente
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
Gayan Weerakutti
fuente
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.

Ilhicas
fuente
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

Christian Berendt
fuente
4

En Fedora 22, debe hacer esto en su lugar:

sudo dnf install python-devel
sudo dnf install openldap-devel
chfw
fuente
Sigue siendo cierto para F25
Jerther
2

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

xcode-select --install
Andy Fraley
fuente
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).

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

python3 no es compatible con python-ldap. En lugar de instalar ldap3.

Agnel Amodia
fuente
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
Tono Kuriakose
fuente
1

En FreeBSD 11:

pkg install openldap-client # for lber.h
pkg install cyrus-sasl # if you need sasl.h
pip install python-ldap
digitalr00ts
fuente
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.

david.libremone
fuente
1

Para estibador alpino

apk add openldap-dev

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

pip install python3-ldap
Akhilraj NS
fuente
0

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

piedad
fuente
0

para aquellos que usan alphine linux, apk agregue openldap-dev

Vivin Veerali
fuente