Cài đặt PIP không thể tìm thấy ffi.h mặc dù nó nhận ra libffi


76

Tôi đã cài đặt libffitrên máy chủ Linux của mình cũng như đặt đúng PKG_CONFIG_PATHbiến môi trường vào đúng thư mục, vì pipnhận ra rằng nó đã được cài đặt; tuy nhiên, khi cố gắng cài đặt pyOpenSSL, pip nói rằng nó không thể tìm thấy tệp 'ffi.h'. Tôi biết cả hai thứ ffi.htồn tại cũng như thư mục của nó, vậy làm cách nào để thu hẹp khoảng cách này giữa ffi.hpip?


nếu bạn đang thực hiện việc này để cài đặt scrappy, hãy làm theo hướng dẫn này clasense4.wordpress.com/2015/11/25/…
Dr Deo

Câu trả lời:


20

Bạn có thể sử dụng CFLAGS(và LDFLAGShoặc nhiều tùy chọn trình biên dịch và trình liên kết khác) trước piplệnh (ditto for setup.py):

Một cái gì đó tương tự như sau sẽ hoạt động:

CFLAGS=-I/usr/include/libffi/include pip install pyOpenSSL

7
Điều này không làm việc cho tôi thay vì cài đặt libffi-devđã làm.
coderofthedark

cũng cố định PIP3 thất bại của tôi cài đặt này jupyter mà đưa ra một lỗi biên dịch ffi.h trên raspbian
Sebapi

245

Bạn cũng cần cài đặt gói phát triển.

libffi-devtrên Debian / Ubuntu, libffi-develtrên Redhat / Centos / Fedora.


6
Lưu ý rằng OP nói rằng "Tôi biết cả ffi.h tồn tại cũng như thư mục của nó", cho biết rằng √ersion (tiêu đề) phát triển đã được cài đặt. Vì vậy, câu trả lời này giải quyết một vấn đề khác.

1
apk add libffi-devđã làm việc cho tôi trên Alpine 3.11.6. Cảm ơn
hmacias

23

Để thêm vào câu trả lời của mhawke, thông thường các hệ thống dựa trên Debian / Ubuntu là "-dev" thay vì "-devel" cho các hệ thống dựa trên RPM

Vì vậy, đối với Ubuntu, nó sẽapt-get install libffi libffi-dev

RHEL, CentOS, Fedora (lên đến v22) yum install libffi libffi-devel

Fedora 23+ dnf install libffi libffi-devel

OSX / MacOS (giả sử homebrew được cài đặt)brew install libffi


2
Đối với ubuntu bây giờ nó là libffi6.
darkhipo

@darkhipo - Lưu ý rằng thư viện phát triển, tức là libffi-dev vẫn được đặt tên libffi-dev(không có số 6). Điều này có liên quan đến tháng 11/2019 bằng cách sử dụng Ubuntu 18.04.
Guy Avraham

5

Ubuntu / Mint

sudo apt-get install libffi6 libffi-dev 

xin vui lòng giải thích
JJJ

ChrisN đã đề cập đến điều này. Nếu câu trả lời của bạn thêm giá trị bổ sung, vui lòng giải thích.
jpaugh

4

pipgói thường không sử dụng pkg-config. Do đó, bạn nên đặt CFLAGSLDFLAGStheo cách thủ công:

CFLAGS=$(pkg-config --cflags libffi) LDFLAGS=$(pkg-config --libs libffi) pip install pyOpenSSL



3

Bạn cần cài đặt gói phát triển cho libffi.

Trên các hệ thống dựa trên RPM (Fedora, Redhat, CentOS, v.v.), gói được đặt tên libffi-devel.

Không chắc chắn về hệ thống Debian / Ubuntu, tôi chắc chắn rằng ai đó sẽ hiểu điều đó.

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.