# Installing python-ldap

## Installing from PyPI

The preferred point for downloading the “official” source distribution is the PyPI repository which supports installing via pip. For example:

    $ python -m pip install python-ldap

For installing from PyPI, you will need the same Build prerequisites as when installing from source.

We do not currently provide pre-built packages (wheels).

Furthermore, python-ldap requires the modules pyasn1 and pyasn1-modules. `pip` will install these automatically.

## Pre-built Binaries

Because distributions seem to be all over the place, this page tries to list all the current ones we know of.

Note that the python-ldap team is not responsible for the binary packages except the sources you can grab from the PyPI page. Also note that binary packages are most times not up to date. If you experience troubles with a binary package, it would be nice if you try to build a recent version of python-ldap before submitting a bug report to make sure you did not hit a problem already fixed in recent releases.

### openSUSE Linux

Ships with python-ldap and there’s an additional download repository which contains builds of latest releases (see also OBS package).

### Debian Linux

Have a look into the Debian Package Tracker to get up to date information which versions are available.

### Windows

Unofficial binary builds for Windows are provided by Christoph Gohlke, available at python-ldap-build.

### FreeBSD

The CVS repository of FreeBSD contains the package py-ldap

### macOS

You can install directly with pip. First install Xcode command line tools:

    $ xcode-select --install

Then install python-ldap:

    $ pip install python-ldap

For custom installations, you may need to set environment variables:

    $ export CPPFLAGS="-I$(xcrun --show-sdk-path)/usr/include/sasl"
    $ pip install python-ldap

If using Homebrew:

    $ brew install openldap
    $ pip install python-ldap

## Installing from Source

python-ldap is built and installed using modern Python packaging standards with pyproject.toml configuration. From a source repository:

    $ pip install .

For development installation with editable mode:

    $ pip install -e .

If you have more than one Python interpreter installed locally, you should use the same one you plan to use python-ldap with.

Further instructions can be found in Setuptools documentation.

## Build prerequisites

The following software packages are required to be installed on the local system when building python-ldap:

- Python including its development files

- C compiler corresponding to your Python version (on Linux, it is usually `gcc`)

- OpenLDAP client libs version 2.4.11 or later; it is not possible and not supported to build with prior versions.

- OpenSSL (optional)

- Cyrus SASL (optional)

- Kerberos libraries, MIT or Heimdal (optional)

### Alpine

Packages for building:

    # apk add build-base openldap-dev python3-dev

### CentOS

Packages for building:

    # yum groupinstall "Development tools"
    # yum install openldap-devel python-devel

### Debian

Packages for building:

    # apt-get install build-essential ldap-utils \
        libldap2-dev libsasl2-dev

Packages for building and testing:

    # apt-get install build-essential ldap-utils \
        libldap2-dev libsasl2-dev slapd python3-dev tox \
        lcov valgrind

Note

On older releases `tox` was called `python-tox`.

### Fedora

Packages for building and testing:

    # dnf install "@C Development Tools and Libraries" openldap-devel \
        python3-devel python3-tox \
        lcov clang-analyzer valgrind

Note

`openldap-2.4.45-2` (Fedora 26), `openldap-2.4.45-4` (Fedora 27) or newer are required.

## `setup.cfg`

The file `setup.cfg` allows to set some build and installation parameters for reflecting the local installation of required software packages. Only section `[_ldap]` is described here. More information about other sections can be found in Setuptools documentation.

library_dirs

  Specifies in which directories to search for required libraries.

include_dirs

  Specifies in which directories to search for include files of required libraries.

libs

  A space-separated list of library names to link to (see Libraries used).

extra_compile_args

  Compiler options.

extra_objects

### Libraries used

ldap

ldap_r

  The LDAP protocol library of OpenLDAP. `ldap_r` is the reentrant version and should be preferred.

lber

  The BER encoder/decoder library of OpenLDAP.

sasl2

  The Cyrus-SASL library (optional)

ssl

  The SSL/TLS library of OpenSSL (optional)

crypto

  The basic cryptographic library of OpenSSL (optional)

### Example

The following example is for a full-featured build (including SSL and SASL support) of python-ldap with OpenLDAP installed in a different prefix directory (here `/opt/openldap-2.4`) and SASL header files found in /usr/include/sasl. Debugging symbols are preserved with compile option `-g`.

    [_ldap]
    library_dirs = /opt/openldap-2.4/lib
    include_dirs = /opt/openldap-2.4/include /usr/include/sasl

    extra_compile_args = -g
    extra_objects =

    libs = ldap_r lber sasl2 ssl crypto