Wenn ich den folgenden Befehl ausführen:
Sudo pip install python-ldap
Ich erhalte diesen Fehler:
In einer Datei, die aus Modules/LDAPObject.c enthalten ist: 9:
Modules/errors.h: 8: schwerwiegender Fehler: lber.h: Keine solche Datei oder Verzeichnis
Irgendwelche Ideen, wie man das beheben kann?
Die Website besagt, dass Python-ldap auf OpenLDAP basiert. Sie benötigen also Entwicklungsdateien (Header), um das Python-Modul zu kompilieren. Wenn Sie sich unter Ubuntu befinden, heißt das Paket 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
Um Python-ldap erfolgreich mit pip zu installieren, sind folgende Entwicklungsbibliotheken erforderlich (Paketnamen aus der Ubuntu-Umgebung):
Sudo apt-get install -y python-dev libldap2-dev libsasl2-dev libssl-dev
Auf CentOS/RHEL 6 müssen Sie Folgendes installieren:
Sudo yum install python-devel
Sudo yum install openldap-devel
und yum installiert auch cyrus-sasl-devel
als Abhängigkeit. Dann kannst du laufen:
pip-2.7 install python-ldap
In Ubuntu sieht es so aus:
$ Sudo apt-get install python-dev libldap2-dev libsasl2-dev libssl-dev
$ Sudo pip install python-ldap
Windows: Ich stimme der akzeptierten Antwort voll und ganz zu, aber es dauerte eine Weile, bis ich die Kommentare durchforstete. Ich bin auf dieses spezielle Problem mit Reviewboard unter Windows mit dem Bitnami gestoßen. Um dann eine Antwort für Windows zu geben, habe ich diesen in den Kommentaren erwähnten Link verwendet:
Führen Sie dann die folgenden Befehle aus
easy_install pip
pip install python_ldap-2.4.20-cp27-none_win32.whl
(weil ich Python 2.7 und eine 32bit dazu installiert hatte)
easy_install python-ldap
In einer auf Ubuntu/Debian basierenden Distribution können Sie mit apt-file
den Namen des genauen Pakets ermitteln, das die fehlende Header-Datei enthält.
# do this once
Sudo apt-get install apt-file
Sudo apt-file update
$ apt-file search lber.h
libldap2-dev: /usr/include/lber.h
Wie Sie anhand der Ausgabe von apt-file search lber.h
sehen können, müssen Sie lediglich das Paket libldap2-dev
installieren.
Sudo apt-get install libldap2-dev
Für diejenigen, die dasselbe Problem wie Iber.h unter Alpine Linux haben, in einem Docker-Image, das Sie beispielsweise an Alpine anpassen möchten.
Das Paket, nach dem Sie suchen, lautet: openldap-dev
Also laufe
apk add openldap-dev
Verfügbar ab Version 3.3 bis Edge
Verfügbar für sowohl armhf- als auch x86_64-Architekturen.
Auf Fedora 22 müssen Sie stattdessen Folgendes tun:
Sudo dnf install python-devel
Sudo dnf install openldap-devel
Unter openSUSE müssen Sie die Pakete openldap2-devel
, cyrus-sasl-devel
, python-devel
und libopenssl-devel
installieren.
zypper install openldap2-devel cyrus-sasl-devel python-devel libopenssl-devel
Unter OSX benötigen Sie die CLI-Tools von xcode. Öffnen Sie einfach ein Terminal und starten Sie:
xcode-select --install
python3 unterstützt python-ldap nicht. Stattdessen ldap3 zu installieren.
In FreeBSD 11:
pkg install openldap-client # for lber.h
pkg install cyrus-sasl # if you need sasl.h
pip install python-ldap
Als allgemeine Lösung zur Installation von Python-Paketen mit binären Abhängigkeiten [1] unter 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
Sie müssen den Namen Ihres Python-Pakets auf Ubuntu versus PyPI überprüfen. In diesem Fall sind sie gleich.
Funktioniert offensichtlich nicht, wenn das Python-Paket nicht in den Ubuntu-Repos enthalten ist.
[1] Ich habe diesen Trick gelernt, als ich pip install matplotlib
auf Ubuntu __ versuchte.
Für die meisten Systeme werden die Buildanforderungen jetzt in Dokumentation von python-ldap im Abschnitt "Installation" erwähnt.
Wenn etwas für Ihr System fehlt (oder Ihr System vollständig fehlt), informieren Sie den Betreuer bitte! (Ab 2018 bin ich der Betreuer, daher sollte ein Kommentar hier ausreichen mail.)
Wenn Sie mit Windows-Maschinen arbeiten, finden Sie in diesem Link 'Python-ldap' -Rad und können es dann installieren
für diejenigen, die alphine linux verwenden, muss apk openldap-dev
Für Alpine Docker
apk add openldap-dev
wenn die Python-Version 3 und höher ist, versuchen Sie es
pip install python3-ldap