Я не могу установить 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
AndiDog
источник
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
JMU
источник
Спасибо. это все что тебе нужно тогда ты бежишь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
Banjer
источник
32

В Ubuntu это выглядит так:

 $ sudo apt-get install python-dev libldap2-dev libsasl2-dev libssl-dev
 $ sudo pip 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
archangel76
источник
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.

Ilhicas
источник
Хорошо для альпийских изображений. Спасибо.
Розачек
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
chfw
источник
Все еще верно для F25
Джертер
2

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

xcode-select --install
Энди Фрэйли
источник
2

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

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

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

python3 не поддерживает python-ldap. Скорее для установки ldap3.

Агнель Амодия
источник
2

Чтобы исправить ошибку из-за зависимостей для установки python-ldap: Windows 7/10

скачать файл whl

http://www.lfd.uci.edu/~gohlke/pythonlibs/#python-ldap .

костюм Python 3.6 с

python_ldap-3.2.0-cp36-cp36m-win_amd64.whl

Разверните файл в:

C: \ python36 \ Scripts \

установить его с

python -m pip install python_ldap-3.2.0-cp36-cp36m-win_amd64.whl
Тоно Куриакосе
источник
1

В FreeBSD 11:

pkg install openldap-client # for lber.h
pkg install cyrus-sasl # if you need sasl.h
pip install python-ldap
digitalr00ts
источник
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.

david.libremone
источник
1

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

apk add openldap-dev

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

pip install python3-ldap
Ахилрай Н.С.
источник
0

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

pietà
источник
0

для тех, кто использует alphine linux, apk добавить openldap-dev

Вивин Верали
источник