Tôi không thể cài đặt python-ldap


266

Khi tôi chạy lệnh sau:

sudo pip install python-ldap

Tôi nhận được lỗi này:

Trong tệp được bao gồm từ Mô-đun / LDAPObject.c: 9:

Mô-đun / lỗi.h: 8: lỗi nghiêm trọng: lber.h: Không có tệp hoặc thư mục như vậy

Bất kỳ ý tưởng làm thế nào để sửa lỗi này?


1
Đây là cách tôi sửa nó cho tôi. Tôi đang sử dụng Amazon EC2-Instance và tôi đã vào usr/bin/thư mục của mình và nhận thấy tôi đã có pip, pip-2.7, pip-3.6, and pip-pythonnên tôi đã làm sudo pip-3.6 install ldap3và nó hoạt động với tôi.
Kyle Bridenstine

1
@KyleBridenstine python-ldap không giống với ldap3.
David Mulder

Câu trả lời:


428

Các python-ldap được dựa trên OpenLDAP, vì vậy bạn cần phải có các tập tin phát triển (tiêu đề) để biên dịch các module Python. Nếu bạn đang dùng Ubuntu, gói được gọi 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
Cảm ơn vì điều đó. Nó đã đi xa hơn bây giờ là thất bại với sasl.h không có tập tin hoặc thư mục như vậy
Máy hút bụi

68
@VacuumTube: Các tiêu đề bị thiếu hầu như luôn là dấu hiệu cho -devcác gói bị thiếu (đôi khi cũng được đặt tên -devel). Chỉ cần làm apt-cache search sasl | grep devvà có thể bạn sẽ tìm thấy gói phù hợp - tôi sẽ đoán nó libsasl2-dev.
AndiDog

5
Bất cứ điều gì cho người dùng windows :( Lỗi tương tự, không có giải pháp cho đến nay
Shailen

4
Bạn không phải biên dịch từ nguồn trên Windows. Chỉ cần sử dụng một trong các trình cài đặt từ pypi.python.org/pypi/python-ldap .
Semmel

3
Ngoài ra, người dùng Windows có thể trích xuất trình cài đặt .msi @Semmel đã đề cập để cài đặt vào virtualenv: Cách cài đặt python-ldap trên python 2.7 virtualenv trên windows mà không cần biên dịch (xem bản cập nhật 2)
Dave

143

Để cài đặt python-ldap thành công với pip, cần có các thư viện phát triển sau (tên gói được lấy từ môi trường ubfox):

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

cảm ơn. đây là tất cả những gì bạn cần. sau đó bạn chạysudo pip install python-ldap
Sudipta Basak

71

Trên CentOS / RHEL 6, bạn cần cài đặt:

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

và yum cũng sẽ cài đặt cyrus-sasl-develnhư một phụ thuộc. Sau đó, bạn có thể chạy:

pip-2.7 install python-ldap

32

Trong Ubuntu có vẻ như thế này:

 $ sudo apt-get install python-dev libldap2-dev libsasl2-dev libssl-dev
 $ sudo pip install python-ldap

15

Windows: Tôi hoàn toàn đồng ý với câu trả lời được chấp nhận, nhưng việc tìm hiểu các bình luận mất một thời gian để có được phần cốt lõi của những gì tôi cần. Tôi đã giải quyết vấn đề cụ thể này với Bảng đánh giá trên Windows bằng Bitnami. Để đưa ra câu trả lời cho windows, tôi đã sử dụng liên kết này được đề cập trong các bình luận:

Sau đó, thực hiện các lệnh sau

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

(vì tôi đã cài đặt python 2.7 và cài đặt 32 bit)

easy_install python-ldap


12

"Đừng mù quáng gỡ bỏ / cài đặt phần mềm"

Trong bản phân phối dựa trên Ubuntu / Debian, bạn có thể sử dụng apt-fileđể tìm tên của gói chính xác bao gồm tệp tiêu đề bị thiếu.

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

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

Như bạn có thể thấy từ đầu ra của apt-file search lber.h, bạn chỉ cần cài đặt gói libldap2-dev.

sudo apt-get install libldap2-dev

2
Điều này thực sự nên được ở đầu. Nó cực kỳ hữu ích.
Bobort

Có một CentoOS tương đương với điều này?
Tomislav Urban

11

Đối với những người có cùng vấn đề thiếu Iber.h trên Alpine Linux, trong một hình ảnh docker mà bạn đang cố gắng thích nghi với Alpine chẳng hạn.

Gói bạn đang tìm kiếm là: openldap-dev

Vì vậy hãy chạy

apk add openldap-dev

Có sẵn từ phiên bản 3.3 lên đến Edge

Có sẵn cho cả Kiến trúc armhf và x86_64.


Tốt cho hình ảnh dựa trên núi cao. Cảm ơn.
rozacek

4

Trên openSUSE bạn cần phải cài đặt các gói openldap2-devel, cyrus-sasl-devel, python-devellibopenssl-devel.

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


4

Trên Fedora 22, bạn cần làm điều này thay vào đó:

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

Vẫn đúng cho F25
Jerther

2

Trên OSX, bạn cần các công cụ CLI xcode. Chỉ cần mở một thiết bị đầu cuối và chạy:

xcode-select --install

2

Đối với hầu hết các hệ thống , các yêu cầu xây dựng hiện được đề cập trong tài liệu của python-ldap , trong phần "Cài đặt".

Nếu thiếu bất cứ thứ gì cho hệ thống của bạn (hoặc hệ thống của bạn bị thiếu hoàn toàn), vui lòng cho người bảo trì biết! (Kể từ năm 2018, tôi là người bảo trì, vì vậy một nhận xét ở đây là đủ. Hoặc bạn có thể gửi yêu cầu kéo hoặc gửi thư.)


Cảm ơn, có thể đáng lưu ý rằng nếu bạn đang chạy python3, bạn sẽ cần python3-devel, thay vì python-devel.
Jamie


2

Để sửa lỗi do phụ thuộc để cài đặt python-ldap: Windows 7/10

tải tập tin whl

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

python 3.6 phù hợp với

python_ldap-3.2.0-cp36-cp36m-win_amd64.whl

Triển khai tệp trong:

c: \ python36 \ Script \

cài đặt nó với

python -m pip install python_ldap-3.2.0-cp36-cp36m-win_amd64.whl

1

Trong FreeBSD 11:

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

1

Là một giải pháp chung để cài đặt các gói Python có phụ thuộc nhị phân [1] trên 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

Bạn sẽ phải kiểm tra tên gói Python của bạn trên Ubuntu so với PyPI. Trong trường hợp này chúng giống nhau.

Rõ ràng là không hoạt động nếu gói Python không có trong repos Ubuntu.

[1] Tôi đã học được mẹo này khi thử pip install matplotlibtrên Ubuntu.


1

Đối với bến tàu

apk add openldap-dev

Nếu phiên bản python là 3 trở lên hãy thử

pip install python3-ldap

0

Nếu bạn đang làm việc với các máy tính windows, bạn có thể tìm thấy bánh xe 'python-ldap' trong Liên kết này và sau đó bạn có thể cài đặt nó


0

Đối với những người đang sử dụng linux alphine, apk thêm openldap-dev


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.