2015-07-20 55 views
44

我在我的Linux服務器上安裝了libffi,並且PKG_CONFIG_PATH環境變量正確設置爲正確的目錄,因爲pip認識到它已安裝;然而,當試圖安裝pyOpenSSL時,pip指出它找不到文件'ffi.h'。我知道ffi.h和它的目錄都存在,那麼我該如何去關閉ffi.hpip之間的差距呢?PIP安裝無法找到ffi.h,即使它識別出libffi

+0

,如果你這樣做是爲了安裝鬥志,按照這個教程https://clasense4.wordpress.com/2015/ 11/25/how-to-install-scrapy-on-centos-7/ –

回答

9

您可以使用CFLAGS(和LDFLAGS或其他各種編譯器和連接選項)pip命令前(同上,用於setup.py):

類似的東西下面應該工作:

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

完美!謝謝,這工作。 – DonutGaz

140

您還需要安裝開發包。

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

+6

這個答案實際上解決了這個問題! –

+2

請注意,OP聲明「我知道ffi.h和其目錄一樣」,表示已經安裝了開發√ersion(頭文件)。所以這個答案解決了另一個問題。 – Evert

1

您需要安裝libffi的開發包。

在基於RPM的系統(Fedora,Redhat,CentOS等)上,程序包名爲libffi-devel

不知道Debian/Ubuntu系統,我敢肯定別人會用這個。

2

pip包通常不會使用pkg-config。因此,你應該設置CFLAGSLDFLAGS手動:

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

爲了增加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