Python-ldap did not install in 2.0

(.venv) indico@indico-test:~$ pip install python-ldap
Collecting python-ldap
  Downloading python-ldap-2.4.45.tar.gz (296kB)
    100% |████████████████████████████████| 296kB 3.0MB/s 
Requirement already satisfied: setuptools in ./.venv/lib/python2.7/site-packages (from python-ldap)
Building wheels for collected packages: python-ldap
  Running setup.py bdist_wheel for python-ldap ... error
  Complete output from command /opt/indico/.venv/bin/python2 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-8tOxrW/python-ldap/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" bdist_wheel -d /tmp/tmpg_D7hcpip-wheel- --python-tag cp27:
  defines: HAVE_SASL HAVE_TLS HAVE_LIBLDAP_R
  extra_compile_args:
  extra_objects:
  include_dirs: /usr/include /usr/include/sasl /usr/local/include /usr/local/include/sasl
  library_dirs: /usr/lib /usr/lib64 /usr/local/lib /usr/local/lib64
  libs: ldap_r
  running bdist_wheel
  running build
  running build_py
  file Lib/ldap.py (for module ldap) not found
  file Lib/ldap/controls.py (for module ldap.controls) not found
  file Lib/ldap/extop.py (for module ldap.extop) not found
  file Lib/ldap/schema.py (for module ldap.schema) not found
  creating build
  creating build/lib.linux-x86_64-2.7
  copying Lib/ldapurl.py -> build/lib.linux-x86_64-2.7
  copying Lib/ldif.py -> build/lib.linux-x86_64-2.7
  copying Lib/dsml.py -> build/lib.linux-x86_64-2.7
  copying Lib/slapdtest.py -> build/lib.linux-x86_64-2.7
  creating build/lib.linux-x86_64-2.7/ldap
  copying Lib/ldap/__init__.py -> build/lib.linux-x86_64-2.7/ldap
  copying Lib/ldap/async.py -> build/lib.linux-x86_64-2.7/ldap
  creating build/lib.linux-x86_64-2.7/ldap/controls
  copying Lib/ldap/controls/__init__.py -> build/lib.linux-x86_64-2.7/ldap/controls
  copying Lib/ldap/controls/deref.py -> build/lib.linux-x86_64-2.7/ldap/controls
  copying Lib/ldap/controls/libldap.py -> build/lib.linux-x86_64-2.7/ldap/controls
  copying Lib/ldap/controls/openldap.py -> build/lib.linux-x86_64-2.7/ldap/controls
  copying Lib/ldap/controls/ppolicy.py -> build/lib.linux-x86_64-2.7/ldap/controls
  copying Lib/ldap/controls/psearch.py -> build/lib.linux-x86_64-2.7/ldap/controls
  copying Lib/ldap/controls/pwdpolicy.py -> build/lib.linux-x86_64-2.7/ldap/controls
  copying Lib/ldap/controls/readentry.py -> build/lib.linux-x86_64-2.7/ldap/controls
  copying Lib/ldap/controls/sessiontrack.py -> build/lib.linux-x86_64-2.7/ldap/controls
  copying Lib/ldap/controls/simple.py -> build/lib.linux-x86_64-2.7/ldap/controls
  copying Lib/ldap/controls/sss.py -> build/lib.linux-x86_64-2.7/ldap/controls
  copying Lib/ldap/cidict.py -> build/lib.linux-x86_64-2.7/ldap
  copying Lib/ldap/dn.py -> build/lib.linux-x86_64-2.7/ldap
  creating build/lib.linux-x86_64-2.7/ldap/extop
  copying Lib/ldap/extop/__init__.py -> build/lib.linux-x86_64-2.7/ldap/extop
  copying Lib/ldap/extop/dds.py -> build/lib.linux-x86_64-2.7/ldap/extop
  copying Lib/ldap/filter.py -> build/lib.linux-x86_64-2.7/ldap
  copying Lib/ldap/functions.py -> build/lib.linux-x86_64-2.7/ldap
  copying Lib/ldap/ldapobject.py -> build/lib.linux-x86_64-2.7/ldap
  copying Lib/ldap/logger.py -> build/lib.linux-x86_64-2.7/ldap
  copying Lib/ldap/modlist.py -> build/lib.linux-x86_64-2.7/ldap
  copying Lib/ldap/resiter.py -> build/lib.linux-x86_64-2.7/ldap
  copying Lib/ldap/sasl.py -> build/lib.linux-x86_64-2.7/ldap
  creating build/lib.linux-x86_64-2.7/ldap/schema
  copying Lib/ldap/schema/__init__.py -> build/lib.linux-x86_64-2.7/ldap/schema
  copying Lib/ldap/schema/models.py -> build/lib.linux-x86_64-2.7/ldap/schema
  copying Lib/ldap/schema/subentry.py -> build/lib.linux-x86_64-2.7/ldap/schema
  copying Lib/ldap/schema/tokenizer.py -> build/lib.linux-x86_64-2.7/ldap/schema
  copying Lib/ldap/syncrepl.py -> build/lib.linux-x86_64-2.7/ldap
  file Lib/ldap.py (for module ldap) not found
  file Lib/ldap/controls.py (for module ldap.controls) not found
  file Lib/ldap/extop.py (for module ldap.extop) not found
  file Lib/ldap/schema.py (for module ldap.schema) not found
  running egg_info
  writing requirements to Lib/python_ldap.egg-info/requires.txt
  writing Lib/python_ldap.egg-info/PKG-INFO
  writing top-level names to Lib/python_ldap.egg-info/top_level.txt
  writing dependency_links to Lib/python_ldap.egg-info/dependency_links.txt
  file Lib/ldap.py (for module ldap) not found
  file Lib/ldap/controls.py (for module ldap.controls) not found
  file Lib/ldap/extop.py (for module ldap.extop) not found
  file Lib/ldap/schema.py (for module ldap.schema) not found
  reading manifest file 'Lib/python_ldap.egg-info/SOURCES.txt'
  reading manifest template 'MANIFEST.in'
  warning: no files found matching 'Makefile'
  warning: no files found matching 'Modules/LICENSE'
  writing manifest file 'Lib/python_ldap.egg-info/SOURCES.txt'
  running build_ext
  building '_ldap' extension
  creating build/temp.linux-x86_64-2.7
  creating build/temp.linux-x86_64-2.7/Modules
  x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -Wdate-time -D_FORTIFY_SOURCE=2 -g -fdebug-prefix-map=/build/python2.7-HVkOs2/python2.7-2.7.13=. -fstack-protector-strong -Wformat -Werror=format-security -fPIC -DHAVE_SASL -DHAVE_TLS -DHAVE_LIBLDAP_R -DHAVE_LIBLDAP_R -DLDAPMODULE_VERSION=2.4.45 -IModules -I/usr/include -I/usr/include/sasl -I/usr/local/include -I/usr/local/include/sasl -I/usr/include/python2.7 -c Modules/LDAPObject.c -o build/temp.linux-x86_64-2.7/Modules/LDAPObject.o
  In file included from Modules/LDAPObject.c:8:0:
  Modules/errors.h:7:18: fatal error: lber.h: No such file or directory
   #include "lber.h"
                    ^
  compilation terminated.
  error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
  
  ----------------------------------------
  Failed building wheel for python-ldap
  Running setup.py clean for python-ldap
Failed to build python-ldap
Installing collected packages: python-ldap
  Running setup.py install for python-ldap ... error
    Complete output from command /opt/indico/.venv/bin/python2 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-8tOxrW/python-ldap/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-zVX1rY-record/install-record.txt --single-version-externally-managed --compile --install-headers /opt/indico/.venv/include/site/python2.7/python-ldap:
    defines: HAVE_SASL HAVE_TLS HAVE_LIBLDAP_R
    extra_compile_args:
    extra_objects:
    include_dirs: /usr/include /usr/include/sasl /usr/local/include /usr/local/include/sasl
    library_dirs: /usr/lib /usr/lib64 /usr/local/lib /usr/local/lib64
    libs: ldap_r
    running install
    running build
    running build_py
    file Lib/ldap.py (for module ldap) not found
    file Lib/ldap/controls.py (for module ldap.controls) not found
    file Lib/ldap/extop.py (for module ldap.extop) not found
    file Lib/ldap/schema.py (for module ldap.schema) not found
    creating build
    creating build/lib.linux-x86_64-2.7
    copying Lib/ldapurl.py -> build/lib.linux-x86_64-2.7
    copying Lib/ldif.py -> build/lib.linux-x86_64-2.7
    copying Lib/dsml.py -> build/lib.linux-x86_64-2.7
    copying Lib/slapdtest.py -> build/lib.linux-x86_64-2.7
    creating build/lib.linux-x86_64-2.7/ldap
    copying Lib/ldap/__init__.py -> build/lib.linux-x86_64-2.7/ldap
    copying Lib/ldap/async.py -> build/lib.linux-x86_64-2.7/ldap
    creating build/lib.linux-x86_64-2.7/ldap/controls
    copying Lib/ldap/controls/__init__.py -> build/lib.linux-x86_64-2.7/ldap/controls
    copying Lib/ldap/controls/deref.py -> build/lib.linux-x86_64-2.7/ldap/controls
    copying Lib/ldap/controls/libldap.py -> build/lib.linux-x86_64-2.7/ldap/controls
    copying Lib/ldap/controls/openldap.py -> build/lib.linux-x86_64-2.7/ldap/controls
    copying Lib/ldap/controls/ppolicy.py -> build/lib.linux-x86_64-2.7/ldap/controls
    copying Lib/ldap/controls/psearch.py -> build/lib.linux-x86_64-2.7/ldap/controls
    copying Lib/ldap/controls/pwdpolicy.py -> build/lib.linux-x86_64-2.7/ldap/controls
    copying Lib/ldap/controls/readentry.py -> build/lib.linux-x86_64-2.7/ldap/controls
    copying Lib/ldap/controls/sessiontrack.py -> build/lib.linux-x86_64-2.7/ldap/controls
    copying Lib/ldap/controls/simple.py -> build/lib.linux-x86_64-2.7/ldap/controls
    copying Lib/ldap/controls/sss.py -> build/lib.linux-x86_64-2.7/ldap/controls
    copying Lib/ldap/cidict.py -> build/lib.linux-x86_64-2.7/ldap
    copying Lib/ldap/dn.py -> build/lib.linux-x86_64-2.7/ldap
    creating build/lib.linux-x86_64-2.7/ldap/extop
    copying Lib/ldap/extop/__init__.py -> build/lib.linux-x86_64-2.7/ldap/extop
    copying Lib/ldap/extop/dds.py -> build/lib.linux-x86_64-2.7/ldap/extop
    copying Lib/ldap/filter.py -> build/lib.linux-x86_64-2.7/ldap
    copying Lib/ldap/functions.py -> build/lib.linux-x86_64-2.7/ldap
    copying Lib/ldap/ldapobject.py -> build/lib.linux-x86_64-2.7/ldap
    copying Lib/ldap/logger.py -> build/lib.linux-x86_64-2.7/ldap
    copying Lib/ldap/modlist.py -> build/lib.linux-x86_64-2.7/ldap
    copying Lib/ldap/resiter.py -> build/lib.linux-x86_64-2.7/ldap
    copying Lib/ldap/sasl.py -> build/lib.linux-x86_64-2.7/ldap
    creating build/lib.linux-x86_64-2.7/ldap/schema
    copying Lib/ldap/schema/__init__.py -> build/lib.linux-x86_64-2.7/ldap/schema
    copying Lib/ldap/schema/models.py -> build/lib.linux-x86_64-2.7/ldap/schema
    copying Lib/ldap/schema/subentry.py -> build/lib.linux-x86_64-2.7/ldap/schema
    copying Lib/ldap/schema/tokenizer.py -> build/lib.linux-x86_64-2.7/ldap/schema
    copying Lib/ldap/syncrepl.py -> build/lib.linux-x86_64-2.7/ldap
    file Lib/ldap.py (for module ldap) not found
    file Lib/ldap/controls.py (for module ldap.controls) not found
    file Lib/ldap/extop.py (for module ldap.extop) not found
    file Lib/ldap/schema.py (for module ldap.schema) not found
    running egg_info
    writing requirements to Lib/python_ldap.egg-info/requires.txt
    writing Lib/python_ldap.egg-info/PKG-INFO
    writing top-level names to Lib/python_ldap.egg-info/top_level.txt
    writing dependency_links to Lib/python_ldap.egg-info/dependency_links.txt
    file Lib/ldap.py (for module ldap) not found
    file Lib/ldap/controls.py (for module ldap.controls) not found
    file Lib/ldap/extop.py (for module ldap.extop) not found
    file Lib/ldap/schema.py (for module ldap.schema) not found
    reading manifest file 'Lib/python_ldap.egg-info/SOURCES.txt'
    reading manifest template 'MANIFEST.in'
    warning: no files found matching 'Makefile'
    warning: no files found matching 'Modules/LICENSE'
    writing manifest file 'Lib/python_ldap.egg-info/SOURCES.txt'
    running build_ext
    building '_ldap' extension
    creating build/temp.linux-x86_64-2.7
    creating build/temp.linux-x86_64-2.7/Modules
    x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -Wdate-time -D_FORTIFY_SOURCE=2 -g -fdebug-prefix-map=/build/python2.7-HVkOs2/python2.7-2.7.13=. -fstack-protector-strong -Wformat -Werror=format-security -fPIC -DHAVE_SASL -DHAVE_TLS -DHAVE_LIBLDAP_R -DHAVE_LIBLDAP_R -DLDAPMODULE_VERSION=2.4.45 -IModules -I/usr/include -I/usr/include/sasl -I/usr/local/include -I/usr/local/include/sasl -I/usr/include/python2.7 -c Modules/LDAPObject.c -o build/temp.linux-x86_64-2.7/Modules/LDAPObject.o
    In file included from Modules/LDAPObject.c:8:0:
    Modules/errors.h:7:18: fatal error: lber.h: No such file or directory
     #include "lber.h"
                      ^
    compilation terminated.
    error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
    
    ----------------------------------------
Command "/opt/indico/.venv/bin/python2 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-8tOxrW/python-ldap/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-zVX1rY-record/install-record.txt --single-version-externally-managed --compile --install-headers /opt/indico/.venv/include/site/python2.7/python-ldap" failed with error code 1 in /tmp/pip-build-8tOxrW/python-ldap/

You need to install openldap-devel, openldap-dev or a similar package using your operating system’s package manager. Then installing python-ldap should work fine.

Hi!
Thanks a lot, it did work, but where should we put the ldap config and what’s the name of the file?

You add it to your indico.conf. This should provide a useful example to start with, but of course you will have to adapt it to your LDAP environment: https://gist.github.com/ThiefMaster/565211a992cca464fe0409775af69846

There’s some more documentation on the LDAP-specific setting (_ldap_config) here: https://gist.github.com/ThiefMaster/7ede38278bf4a3171e21aa4e3cb970e9#ldap-options