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?


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

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

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

32

Dans Ubuntu, cela ressemble à ceci:

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

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


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

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.


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


4

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

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

Toujours vrai pour F25
Jerther

2

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

xcode-select --install

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.)


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

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

1

Dans FreeBSD 11:

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

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.


1

Pour docker alpin

apk add openldap-dev

si la version python est de 3 et plus, essayez

pip install python3-ldap

0

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



En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.