Não consigo instalar python-ldap

266

Quando executo o seguinte comando:

sudo pip install python-ldap

Eu recebo este erro:

No arquivo incluído em Modules / LDAPObject.c: 9:

Modules / errors.h: 8: erro fatal: lber.h: esse arquivo ou diretório não existe

Alguma idéia de como corrigir isso?

Tubo de vácuo
fonte
1
Foi assim que eu o consertei. Estou em uma instância do Amazon EC2 e entrei no meu usr/bin/diretório e notei que pip, pip-2.7, pip-3.6, and pip-pythonsim, sudo pip-3.6 install ldap3e funcionou para mim.
Kyle Bridenstine
1
@KyleBridenstine python-ldap não é a mesma coisa que ldap3.
David Mulder

Respostas:

428

O python-ldap é baseado no OpenLDAP, então você precisa ter os arquivos de desenvolvimento (cabeçalhos) para compilar o módulo Python. Se você estiver no Ubuntu, o pacote é chamado 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
fonte
2
Obrigado por isso. Tem ainda agora está falhando com sasl.h existe tal arquivo ou diretório
VacuumTube
68
@VacuumTube: Cabeçalhos ausentes são quase sempre um sinal de -devpacotes ausentes (às vezes também chamados -devel). Basta fazer apt-cache search sasl | grep deve você provavelmente encontrará o pacote certo - eu acho que é libsasl2-dev.
AndiDog 22/01
5
Qualquer coisa para usuários do Windows :( mesmo erro, nenhuma solução até agora
Shailen
4
Você não precisa compilar a partir da fonte no Windows. Basta usar um dos instaladores de pypi.python.org/pypi/python-ldap .
Semmel 19/09/13
3
Além disso, os usuários do Windows pode extrair o .msi instalador @Semmel mencionado para instalar em um virtualenv: Como instalar o python-ldap em um python 2,7 virtualenv em janelas sem compilar (veja update 2)
Dave
143

Para instalar o python-ldap com sucesso com o pip, são necessárias as seguintes bibliotecas de desenvolvimento (nomes de pacotes retirados do ambiente do ubuntu):

sudo apt-get install -y python-dev libldap2-dev libsasl2-dev libssl-dev
jmu
fonte
obrigado. Isso é tudo que você precisa. então você corresudo pip install python-ldap
Sudipta Basak
71

No CentOS / RHEL 6, você precisa instalar:

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

e o yum também será instalado cyrus-sasl-develcomo uma dependência. Então você pode executar:

pip-2.7 install python-ldap
Banjer
fonte
32

No Ubuntu, fica assim:

 $ sudo apt-get install python-dev libldap2-dev libsasl2-dev libssl-dev
 $ sudo pip install python-ldap
Jeff Sheffield
fonte
15

Windows: Concordo plenamente com a resposta aceita, mas pesquisar nos comentários levou um tempo para entender o que eu precisava. Corri com esse problema específico com o Reviewboard no Windows usando o Bitnami. Para dar uma resposta para o Windows, usei este link mencionado nos comentários:

Em seguida, execute os seguintes comandos

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

(porque eu tinha python 2.7 e uma instalação de 32 bits)

easy_install python-ldap
archangel76
fonte
12

"Não remova / instale cegamente o software"

Em uma distribuição baseada no Ubuntu / Debian, você pode usar apt-filepara encontrar o nome do pacote exato que inclui o arquivo de cabeçalho ausente.

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

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

Como você pode ver na saída de apt-file search lber.h, você só precisa instalar o pacote libldap2-dev.

sudo apt-get install libldap2-dev
Gayan Weerakutti
fonte
2
Isso realmente deve estar no topo. É extremamente útil.
Bobort 6/03
Existe um CentoOS equivalente a isso?
Tomislav Urban
11

Para aqueles que têm o mesmo problema de falta do Iber.h no Alpine Linux, em uma imagem do docker que você está tentando adaptar ao Alpine, por exemplo.

O pacote que você está procurando é: openldap-dev

Então corra

apk add openldap-dev

Disponível da versão 3.3 até o Edge

Disponível para as arquiteturas armhf e x86_64.

Ilhicas
fonte
Bom para imagens alpinas. Obrigado.
rozacek 6/03
4

No openSUSE é necessário instalar os pacotes openldap2-devel, cyrus-sasl-devel, python-devele libopenssl-devel.

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

Christian Berendt
fonte
4

No Fedora 22, você precisa fazer isso:

sudo dnf install python-devel
sudo dnf install openldap-devel
chfw
fonte
Ainda é verdade para F25
Jerther 12/04/19
2

No OSX, você precisa das ferramentas da CLI do xcode. Basta abrir um terminal e executar:

xcode-select --install
Andy Fraley
fonte
2

Para a maioria dos sistemas , os requisitos de compilação agora são mencionados na documentação do python-ldap , na seção "Instalação".

Se algo estiver faltando para o seu sistema (ou o sistema estiver totalmente ausente), informe o mantenedor! (A partir de 2018, sou o mantenedor, um comentário aqui deve ser suficiente. Ou você pode enviar uma solicitação ou recebimento por correio.)

Petr Viktorin
fonte
Obrigado, pode ser interessante notar que, se você estiver executando o python3, precisará do python3-devel, em vez do python-devel.
Jamie
2

python3 não suporta python-ldap. Em vez de instalar o ldap3.

Agnel Amodia
fonte
2

Para corrigir o erro devido às dependências para instalar o python-ldap: Windows 7/10

baixe o arquivo whl

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

terno python 3.6 com

python_ldap-3.2.0-cp36-cp36m-win_amd64.whl

Implante o arquivo em:

c: \ python36 \ Scripts \

instale-o com

python -m pip install python_ldap-3.2.0-cp36-cp36m-win_amd64.whl
Tono Kuriakose
fonte
1

No FreeBSD 11:

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

Como uma solução geral para instalar pacotes Python com dependências binárias [1] no 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

Você precisará verificar o nome do seu pacote Python no Ubuntu versus PyPI. Nesse caso, são iguais.

Obviamente não funciona se o pacote Python não estiver nos repositórios do Ubuntu.

[1] Aprendi esse truque ao tentar pip install matplotlibno Ubuntu.

david.libremone
fonte
1

Para estivador alpino

apk add openldap-dev

se a versão python for 3 ou superior, tente

pip install python3-ldap
Akhilraj NS
fonte
0

Se você estiver trabalhando com máquinas Windows, poderá encontrar a roda 'python-ldap' neste link e depois poderá instalá-lo

pietà
fonte
0

para quem está usando o alphine linux, apk add openldap-dev

Vivin Veerali
fonte