Je ne peux pas installer python-ldap

266

Lorsque j'exécute la commande suivante:

sudo pip install python-ldap

Je reçois cette erreur:

Dans le fichier inclus depuis Modules / LDAPObject.c: 9:

Modules / errors.h: 8: erreur fatale: lber.h: Aucun fichier ou répertoire de ce type

Une idée de comment réparer ça?

Tuyau d'aspirateur
la source
1
C'est comme ça que je l'ai réparé pour moi. Je suis sur une instance Amazon EC2 et je suis allé dans mon usr/bin/répertoire et j'ai remarqué que je l' pip, pip-2.7, pip-3.6, and pip-pythonavais fait sudo pip-3.6 install ldap3et cela a fonctionné pour moi.
Kyle Bridenstine
1
@KyleBridenstine python-ldap n'est pas la même chose que ldap3.
David Mulder

Réponses:

428

Le python-ldap est basé sur OpenLDAP, vous devez donc avoir les fichiers de développement (en-têtes) afin de compiler le module Python. Si vous êtes sur Ubuntu, le package est appelé 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
la source
2
Merci pour ça. Il est allé plus loin, il échoue maintenant avec sasl.h aucun fichier ou répertoire de ce type
VacuumTube
68
@VacuumTube: les en-têtes manquants sont presque toujours un signe de -devpaquets manquants (parfois aussi nommés -devel). Faites-le apt-cache search sasl | grep devet vous trouverez probablement le bon package - je suppose que c'est le cas libsasl2-dev.
AndiDog
5
N'importe quoi pour les utilisateurs de Windows :( Même erreur, aucune solution pour l'instant
Shailen
4
Vous n'avez pas besoin de compiler depuis la source sous Windows. Utilisez simplement l'un des programmes d'installation de pypi.python.org/pypi/python-ldap .
Semmel
3
En outre, les utilisateurs de Windows peuvent extraire le programme d'installation .msi @Semmel mentionné pour installer dans un virtualenv: Comment installer python-ldap sur un python 2.7 virtualenv sur Windows sans compiler (voir la mise à jour 2)
Dave
143

Pour installer python-ldap avec pip avec succès, les bibliothèques de développement suivantes sont nécessaires (noms de paquetages tirés de l'environnement ubuntu):

sudo apt-get install -y python-dev libldap2-dev libsasl2-dev libssl-dev
jmu
la source
Merci. c'est tout ce dont vous avez besoin. alors vous courezsudo pip install python-ldap
Sudipta Basak
71

Sur CentOS / RHEL 6, vous devez installer:

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

et yum sera également installé en cyrus-sasl-develtant que dépendance. Ensuite, vous pouvez exécuter:

pip-2.7 install python-ldap
Banjer
la source
32

Dans Ubuntu, cela ressemble à ceci:

 $ sudo apt-get install python-dev libldap2-dev libsasl2-dev libssl-dev
 $ sudo pip install python-ldap
Jeff Sheffield
la source
15

Windows: je suis entièrement d'accord avec la réponse acceptée, mais il a fallu un certain temps pour fouiller dans les commentaires pour arriver à la viande dont j'avais besoin. J'ai rencontré ce problème spécifique avec Reviewboard sur Windows en utilisant le Bitnami. Pour donner une réponse pour Windows alors, j'ai utilisé ce lien mentionné dans les commentaires:

Ensuite, exécuté les commandes suivantes

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

(parce que j'avais python 2.7 et une installation 32 bits)

easy_install python-ldap
archangel76
la source
12

"Ne supprimez / installez pas aveuglément un logiciel"

Dans une distribution basée sur Ubuntu / Debian, vous pouvez utiliser apt-filepour trouver le nom du package exact qui inclut le fichier d'en-tête manquant.

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

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

Comme vous pouvez le voir sur la sortie de apt-file search lber.h, il vous suffit d'installer le package libldap2-dev.

sudo apt-get install libldap2-dev
Gayan Weerakutti
la source
2
Cela devrait vraiment être au sommet. C'est extrêmement utile.
Bobort
Existe-t-il un CentoOS équivalent à cela?
Tomislav Urban
11

Pour ceux qui ont le même problème de manque Iber.h sur Alpine Linux, dans une image de docker que vous essayez d'adapter à Alpine par exemple.

Le package que vous recherchez est: openldap-dev

Alors cours

apk add openldap-dev

Disponible de la version 3.3 à Edge

Disponible pour les architectures armhf et x86_64.

Ilhicas
la source
Bon pour les images alpines. Merci.
rozacek
4

Sur openSUSE vous devez installer les packages openldap2-devel, cyrus-sasl-devel, python-develet libopenssl-devel.

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

Christian Berendt
la source
4

Sur Fedora 22, vous devez le faire à la place:

sudo dnf install python-devel
sudo dnf install openldap-devel
chfw
la source
Toujours vrai pour F25
Jerther
2

Sur OSX, vous avez besoin des outils CLI xcode. Ouvrez simplement un terminal et lancez:

xcode-select --install
Andy Fraley
la source
2

Pour la plupart des systèmes , les exigences de construction sont maintenant mentionnées dans la documentation de python-ldap , dans la section "Installation".

Si quelque chose manque à votre système (ou si votre système manque complètement), veuillez en informer le responsable! (À partir de 2018, je suis le responsable, donc un commentaire ici devrait suffire. Ou vous pouvez envoyer une demande de pull ou un mail.)

Petr Viktorin
la source
Merci, il convient de noter que si vous exécutez python3, vous aurez besoin de python3-devel plutôt que de python-devel.
Jamie
2

python3 ne prend pas en charge python-ldap. Plutôt installer ldap3.

Agnel Amodia
la source
2

Pour corriger l'erreur due aux dépendances pour installer le python-ldap: Windows 7/10

téléchargez le fichier whl

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

costume python 3.6 avec

python_ldap-3.2.0-cp36-cp36m-win_amd64.whl

Déployez le fichier dans:

c: \ python36 \ Scripts \

installez-le avec

python -m pip install python_ldap-3.2.0-cp36-cp36m-win_amd64.whl
Tono Kuriakose
la source
1

Dans FreeBSD 11:

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

Comme solution générale pour installer des paquets Python avec des dépendances binaires [1] sur 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

Vous devrez vérifier le nom de votre package Python sur Ubuntu par rapport à PyPI. Dans ce cas, ce sont les mêmes.

Évidemment, cela ne fonctionne pas si le package Python n'est pas dans le référentiel Ubuntu.

[1] J'ai appris cette astuce en essayant pip install matplotlibsur Ubuntu.

david.libremone
la source
1

Pour docker alpin

apk add openldap-dev

si la version python est de 3 et plus, essayez

pip install python3-ldap
Akhilraj NS
la source
0

Si vous travaillez avec des machines Windows, vous pouvez trouver la roue 'python-ldap' dans ce lien , puis vous pouvez l'installer

pietà
la source
0

pour ceux qui utilisent alphine linux, apk add openldap-dev

Vivin Veerali
la source