PIP安装无法识别ffi.h,即使它可以识别libffi


76

我已经安装libffi了Linux服务器,并且将PKG_CONFIG_PATH环境变量正确设置为正确的目录,因为pip它已经安装了。但是,在尝试安装pyOpenSSL时,pip指出找不到文件'ffi.h'。我知道这两个ffi.h目录及其目录都存在,所以我该如何缩小ffi.h和之间的差距pip


如果您正在执行此操作以安装scrappy
Deo Dr

Answers:


20

您可以在命令(的ditto )前面使用CFLAGS(以及LDFLAGS其他各种编译器和链接器选项):pipsetup.py

类似于以下内容的东西应该起作用:

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

7
这对我不起作用,而是安装libffi-dev了。
codersofthedark

这也修复了我失败的pip3 install jupyter失败,该错误在raspbian上编译ffi.h时出错
Sebapi

244

您还需要安装开发包。

libffi-dev在Debian / Ubuntu上,libffi-devel在Redhat / Centos / Fedora上。


6
请注意,OP指出“我知道ffi.h以及它的目录都存在”,这表明已经安装了开发版本(标题)。所以这个答案解决了另一个问题。

1
apk add libffi-dev在Alpine 3.11.6上为我工作。谢谢
hmacias

23

要补充mhawke的答案,对于基于RPM的系统,通常基于Debian / Ubuntu的系统是“ -dev”而不是“ -devel”

因此,对于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)。这与使用Ubuntu 18.04的11/2019有关。
Guy Avraham


4

pip包通常不使用pkg-config。因此,你应该设置CFLAGSLDFLAGS手动:

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



3

您需要安装开发包 libffi

在基于RPM的系统(Fedora,Redhat,CentOS等)上,软件包被命名为 libffi-devel

不确定Debian / Ubuntu系统,我相信会有其他人使用。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.