When I run the following command:
sudo pip install python-ldap
I get this error:
In file included from Modules/LDAPObject.c:9:
Modules/errors.h:8: fatal error: lber.h: No such file or directory
How can I fix this?
The python-ldap is based on OpenLDAP, so you need to have the development files (headers) in order to compile the Python module. If you're on Ubuntu, the package is called libldap2-dev
.
sudo apt-get install libsasl2-dev python-dev-is-python3 libldap2-dev libssl-dev
sudo yum install python-devel openldap-devel
-dev
packages (sometimes also named -devel
). Just do apt-cache search sasl | grep dev
and you'll probably find the right package - I would guess it's libsasl2-dev
.
python3-dev
instead of python-dev
if you are using Python 3.
Commented
Aug 9, 2019 at 11:43
To install python-ldap successfully with pip, following development libraries are needed (package names taken from ubuntu environment):
sudo apt-get install -y python-dev libldap2-dev libsasl2-dev libssl-dev
In a Ubuntu or Debian-based distribution, you can use apt-file
to find the name of the exact package that includes the missing header file.
# Do this once
sudo apt-get install apt-file
sudo apt-file update
apt-file search lber.h
Output:
libldap2-dev: /usr/include/lber.h
As you could see from the output of apt-file search lber.h
, you'd just need to install the package libldap2-dev
.
sudo apt-get install libldap2-dev
In Ubuntu it looks like this:
sudo apt-get install python-dev libldap2-dev libsasl2-dev libssl-dev
sudo pip install python-ldap
Windows: I completely agree with the accepted answer, but digging through the comments took a while to get to the meat of what I needed. I ran across this specific problem with Reviewboard on Windows using the Bitnami. To give an answer for Windows then, I used this link mentioned in the comments:
Then, executed the following commands
easy_install pip
pip install python_ldap-2.4.20-cp27-none_win32.whl
(because I had Python 2.7 and a 32-bit install at that)
easy_install python-ldap
For those having the same issue of missing Iber.h on Alpine Linux, in a Docker image that you are trying to adapt to Alpine for instance.
The package you are looking for is: openldap-dev
So run
apk add openldap-dev
Available from version 3.3 up to Edge.
Available for both armhf and x86_64 Architectures.
I had problems with the installation on Windows, so one of the solutions is to install the ldap
package manually.
A few steps:
Go to the page pyldap and download the latest version *whl
.
Open a console then cd to where you've downloaded your file like some-package.whl
and use:
pip install some-package.whl
The current version for pyldap
is 2.4.45. On a concrete example the installation would be:
pip install .\pyldap-2.4.45-cp37-cp37m-win_amd64.whl
# Or
pip install .\python_ldap‑3.3.1‑cp39‑cp39‑win_amd64.whl
Output:
Installing collected packages: pyldap
Successfully installed pyldap-2.4.45
You can install the proper version for Python-3.X though using following command:
# If pip3 is the default pip alias for python-3
pip3 install python3-ldap
# Otherwise
pip install python3-ldap
Also here is the link of PiPy package for further information: python3-ldap 0.9.8.4
ldap3 is a strictly RFC 4510 conforming LDAP V3 pure Python client library. The same codebase runs in Python 2, Python 3, PyPy and PyPy3: https://github.com/cannatag/ldap3
pip install ldap3
from ldap3 import Server, Connection, SAFE_SYNC
server = Server('my_server')
conn = Connection(server, 'my_user', 'my_password', client_strategy=SAFE_SYNC, auto_bind=True)
status, result, response, _ = conn.search('o=test', '(objectclass=*)')
# usually you don't need the original request (4th element of the returned tuple)
On Fedora 22, you need to do this instead:
sudo dnf install python-devel
sudo dnf install openldap-devel
As of December 2021 there was/is a strange problem with the ldap library (at least in Arch Linux/Manjaro).
While installing python-ldap
(at 'Building wheel for python-ldap'), I got the message 'ERROR: Failed building wheel for python-ldap':
/usr/bin/ld: cannot find -lldap_r
collect2: error: ld returned 1 exit status
error: command '/usr/bin/gcc' failed with exit code 1
A workaround is provided at Support for OpenLDAP 2.5+ #432.
I cite:
As a workaround create the file /usr/lib64/libldap_r.so with content INPUT ( libldap.so ). The approach works on all systems that use a GNU ld-compatible linker.
# cat > /usr/lib64/libldap_r.so << EOF INPUT ( libldap.so ) EOF
apk add openldap-dev
If the Python version is 3 and above, try
pip install python3-ldap
On openSUSE you need to install the packages openldap2-devel
, cyrus-sasl-devel
, python-devel
and libopenssl-devel
.
zypper install openldap2-devel cyrus-sasl-devel python-devel libopenssl-devel
To correct the error due to dependencies to install the python-ldap: Windows 7 and Windows 10
Download the whl file from:
https://github.com/cgohlke/python-ldap-build (old link http://www.lfd.uci.edu/~gohlke/pythonlibs/#python-ldap no longer working as reported here)
Python 3.6 suit with
python_ldap-3.2.0-cp36-cp36m-win_amd64.whl
Deploy the file in:
C:\python36\Scripts\
Install it with:
python -m pip install python_ldap-3.2.0-cp36-cp36m-win_amd64.whl
For most systems, the build requirements are now mentioned in python-ldap's documentation, in the "Installing" section.
If anything is missing for your system (or your system is missing entirely), please let maintainer know! (As of 2018, I am the maintainer, so a comment here should be enough. Or you can send a pull request or mail.)
sudo apt-get install build-essential python3-dev python2.7-dev libldap2-dev libsasl2-dev slapd ldap-utils python-tox lcov valgrind
Debian Reference: Build prerequisites, Debian
For others: Installing python-ldap
On OS X, you need the Xcode CLI tools. Just open a terminal and run:
xcode-select --install
In FreeBSD 11:
pkg install openldap-client # For lber.h
pkg install cyrus-sasl # If you need sasl.h
pip install python-ldap
The package python-dev
is deprecated or not longer available. You can use this instead:
sudo apt-get install libsasl2-dev python2-dev python2 python-dev-is-python3 libldap2-dev libssl-dev
pip install python-ldap
python2-dev
and python2
? Why are they necessary?
Commented
Jul 20, 2023 at 9:01
As a general solution to install Python packages with binary dependencies 1 on 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
You'll have to check the name of your Python package on Ubuntu versus PyPI. In this case they're the same.
Obviously, it doesn't work if the Python package is not in the Ubuntu repositories.
[1] I learnt this trick when trying to pip install matplotlib
on Ubuntu.
Also adding libzbar-dev
during the installation of python-ldap
when building Docker solved it for me.
The full command becomes:
apt-get install -y python-dev libldap2-dev libsasl2-dev libssl-dev libzbar-dev
You need to install libldap2-dev (sudo apt-get install libldap2-dev
), but python-dev is also important. Remember to use the version you have (sudo apt-get install python3.8-dev
or sudo apt-get install pythonX.X-dev
)
A hack answer for FreeBSD 13.1 (yes, I know this is deep South of best practices, but I just needed a quick fix):
pkg install openldap24-client
cd /usr/local/include/python3.9
ln -s ../<all of the below> .
lber.h
lber_types.h
ldap.h
ldap_cdefs.h
ldap_features.h
ldap_schema.h
ldap_utf8.h
openldap.h
sasl
pip install python-ldap
Try:
ARCHFLAGS="-arch x86_64" pip3 install python-ldap
If you're working with Windows machines, you can find the 'python-ldap' wheel in this link and then you can install it.