Я не могу установить python-ldap


267

Когда я запускаю следующую команду:

sudo pip install python-ldap

Я получаю эту ошибку:

В файле из модуля / LDAPObject.c: 9:

Modules / errors.h: 8: фатальная ошибка: lber.h: нет такого файла или каталога

Любые идеи, как это исправить?


1
Вот как я исправил это для меня. Я нахожусь на Amazon EC2-Instance, и я вошел в свой usr/bin/каталог и заметил, что у pip, pip-2.7, pip-3.6, and pip-pythonменя так было, sudo pip-3.6 install ldap3и это сработало для меня.
Кайл Бриденстайн

1
@KyleBridenstine python-ldap - это не то же самое, что ldap3.
Дэвид Малдер

Ответы:


428

Питон-LDAP основан на OpenLDAP, поэтому вам нужно иметь файлы развития (заголовки) для компиляции модуля Python. Если вы в Ubuntu, пакет называется 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
Спасибо за это. Он получил дальнейшее завершение работы с sasl.h, где нет такого файла или каталога
VacuumTube

68
@VacuumTube: пропущенные заголовки почти всегда являются признаком пропущенных -devпакетов (иногда их также называют -devel). Просто сделайте, apt-cache search sasl | grep devи вы, вероятно, найдете правильный пакет - я думаю, это так libsasl2-dev.
AndiDog

5
Что-нибудь для пользователей Windows :( Та же ошибка, решений пока нет
Shailen

4
Вам не нужно компилировать из исходного кода в Windows. Просто используйте один из установщиков из pypi.python.org/pypi/python-ldap .
Семмель

3
Кроме того, пользователи Windows могут извлечь упомянутый установщик MSI @Semmel для установки в virtualenv: Как установить python-ldap на python 2.7 virtualenv на окнах без компиляции (см. Обновление 2)
Дейв,

143

Для успешной установки python-ldap с помощью pip необходимы следующие библиотеки разработки (имена пакетов взяты из среды ubuntu):

sudo apt-get install -y python-dev libldap2-dev libsasl2-dev libssl-dev

Спасибо. это все что тебе нужно тогда ты бежишьsudo pip install python-ldap
Судипта Басак

71

На CentOS / RHEL 6 вам необходимо установить:

sudo yum install python-devel
sudo yum install openldap-devel

и yum также будет установлен cyrus-sasl-develкак зависимость. Тогда вы можете запустить:

pip-2.7 install python-ldap


15

Windows: Я полностью согласен с принятым ответом, но копаться в комментариях потребовалось время, чтобы добраться до сути того, что мне было нужно. Я столкнулся с этой конкретной проблемой с Reviewboard на Windows, используя Bitnami. Чтобы дать ответ для окон, я использовал эту ссылку, упомянутую в комментариях:

Затем выполняются следующие команды

easy_install pip
pip install python_ldap-2.4.20-cp27-none_win32.whl

(потому что у меня был Python 2.7 и 32-битная установка)

easy_install python-ldap


12

«Не слепо удаляйте / устанавливайте программное обеспечение»

В дистрибутиве на основе Ubuntu / Debian вы можете использовать, apt-fileчтобы найти имя точного пакета, который включает в себя отсутствующий заголовочный файл.

# do this once
sudo apt-get install apt-file
sudo apt-file update

$ apt-file search lber.h
libldap2-dev: /usr/include/lber.h

Как видно из вывода apt-file search lber.h, вам просто нужно установить пакет libldap2-dev.

sudo apt-get install libldap2-dev

2
Это действительно должно быть на вершине. Это очень полезно.
Боборт

Есть ли эквивалент CentoOS этому?
Томислав Урбан

11

Для тех, у кого та же проблема отсутствует Iber.h в Alpine Linux, в образе докера, который вы пытаетесь адаптировать, например, к Alpine.

Пакет, который вы ищете: openldap-dev

Так беги

apk add openldap-dev

Доступно с версии 3.3 до Edge

Доступно как для armhf, так и для архитектуры x86_64.


Хорошо для альпийских изображений. Спасибо.
Розачек

4

На OpenSUSE вам необходимо установить пакеты openldap2-devel, cyrus-sasl-devel, python-develи libopenssl-devel.

zypper install openldap2-devel cyrus-sasl-devel python-devel libopenssl-devel


4

На Fedora 22 вам нужно сделать это:

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

Все еще верно для F25
Джертер

2

В OSX вам нужны инструменты CLI xcode. Просто откройте терминал и запустите:

xcode-select --install

2

Для большинства систем требования к сборке теперь упоминаются в документации по python-ldap , в разделе «Установка».

Если что-то отсутствует в вашей системе (или ваша система отсутствует полностью), пожалуйста, сообщите об этом сопровождающему! (Начиная с 2018 года я являюсь сопровождающим, поэтому здесь должно быть достаточно комментария. Или вы можете отправить запрос на удаление или написать письмо).


Спасибо, возможно, стоит отметить, что если вы используете python3, вам понадобится python3-devel, а не python-devel.
Джейми



1

В FreeBSD 11:

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

1

Как общее решение для установки пакетов Python с бинарными зависимостями [1] в 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

Вам придется проверить имя вашего пакета Python в Ubuntu по сравнению с PyPI. В этом случае они одинаковы.

Очевидно, не работает, если пакет Python отсутствует в репозиториях Ubuntu.

[1] Я научился этому трюку, пытаясь использовать pip install matplotlibUbuntu.


1

Для альпийского докера

apk add openldap-dev

если версия Python 3 и выше, попробуйте

pip install python3-ldap

0

Если вы работаете с Windows-машинами, вы можете найти колесо «python-ldap» в этой ссылке, а затем установить его



Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.