Встановити PIP не вдається знайти ffi.h, навіть якщо він розпізнає libffi


76

Я встановив libffiна своєму сервері Linux, а також правильно встановив PKG_CONFIG_PATHзмінну середовища у правильний каталог, оскільки pipвизнаю, що вона встановлена; однак, намагаючись встановити pyOpenSSL, pip заявляє, що не може знайти файл 'ffi.h'. Я знаю як те, що ffi.hіснує, так і його каталог, тож як я можу зробити, щоб усунути цю прогалину між ffi.hі pip?


якщо ви робите це, щоб встановити scrappy, дотримуйтесь цього підручника clasense4.wordpress.com/2015/11/25/…
доктор Део

Відповіді:


20

Ви можете використовувати CFLAGS(та LDFLAGSінші різні варіанти компілятора та компонувальника) перед pipкомандою (так само для setup.py):

Повинна працювати щось подібне до наступного:

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

7
Це не спрацювало для мене, а встановлення libffi-devзробило.
codersofthedark

це також виправило мій невдалий pip3 install jupyter, який видав помилку під час компіляції ffi.h на raspbian
Sebapi

245

Вам також потрібно встановити пакет розробки.

libffi-devна Debian / Ubuntu, libffi-develна Redhat / Centos / Fedora.


6
Зверніть увагу, що в OP вказано: "Я знаю і те, що ffi.h існує, і його каталог", вказуючи на те, що √ersion розробки (заголовки) вже встановлено. Тож ця відповідь вирішує ще одну проблему.

1
apk add libffi-devпрацював у мене на Alpine 3.11.6. Дякую
hmacias

23

Щоб додати відповідь mhawke, зазвичай системи на базі Debian / Ubuntu мають "-dev", а не "-devel" для систем на основі RPM

Отже, для Ubuntu це будеapt-get install libffi libffi-dev

RHEL, CentOS, Fedora (до v22) yum install libffi libffi-devel

Fedora 23+ dnf install libffi libffi-devel

OSX / MacOS (за умови, що встановлено домашню мову)brew install libffi


2
Для ubuntu це зараз libffi6.
darkhipo

@darkhipo - Зверніть увагу, що бібліотека розробки, тобто libffi-dev, все ще називається libffi-dev(без 6). Це актуально для 11/2019 з використанням Ubuntu 18.04.
Гай Авраам,


4

pipпакунки зазвичай не використовують pkg-config. Тому слід встановити CFLAGSі LDFLAGSвручну:

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



3

Вам потрібно встановити пакет розробки для libffi.

У системах на основі RPM (Fedora, Redhat, CentOS тощо) пакет називається libffi-devel.

Не впевнений у системах Debian / Ubuntu, я впевнений, що хтось інший це зробить.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.