尝试使用pip安装bcrypt时出现此错误。我在几个地方安装了libffi(Xcode OS X SDK和自制软件),但我不知道如何告诉pip寻找它。有什么建议吗?
Downloading/unpacking bcrypt==1.0.2 (from -r requirements.txt (line 41))
Running setup.py egg_info for package bcrypt
OS/X: confusion between 'cc' versus 'gcc' (see issue 123)
will not use '__thread' in the C code
c/_cffi_backend.c:14:10: fatal error: 'ffi.h' file not found
#include <ffi.h>
^
1 error generated.
Traceback (most recent call last):
File "<string>", line 16, in <module>
File "/Users/cody/virtualenvs/analytics/build/bcrypt/setup.py", line 104, in <module>
"Programming Language :: Python :: 3.3",
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/core.py", line 112, in setup
_setup_distribution = dist = klass(attrs)
File "build/bdist.macosx-10.9-intel/egg/setuptools/dist.py", line 239, in __init__
File "build/bdist.macosx-10.9-intel/egg/setuptools/dist.py", line 264, in fetch_build_eggs
File "build/bdist.macosx-10.9-intel/egg/pkg_resources.py", line 620, in resolve
dist = best[req.key] = env.best_match(req, ws, installer)
File "build/bdist.macosx-10.9-intel/egg/pkg_resources.py", line 858, in best_match
return self.obtain(req, installer) # try and download/install
File "build/bdist.macosx-10.9-intel/egg/pkg_resources.py", line 870, in obtain
return installer(requirement)
File "build/bdist.macosx-10.9-intel/egg/setuptools/dist.py", line 314, in fetch_build_egg
File "build/bdist.macosx-10.9-intel/egg/setuptools/command/easy_install.py", line 593, in easy_install
File "build/bdist.macosx-10.9-intel/egg/setuptools/command/easy_install.py", line 623, in install_item
File "build/bdist.macosx-10.9-intel/egg/setuptools/command/easy_install.py", line 811, in install_eggs
File "build/bdist.macosx-10.9-intel/egg/setuptools/command/easy_install.py", line 1017, in build_and_install
File "build/bdist.macosx-10.9-intel/egg/setuptools/command/easy_install.py", line 1005, in run_setup
distutils.errors.DistutilsError: Setup script exited with error: command 'cc' failed with exit status 1
Complete output from command python setup.py egg_info:
OS/X: confusion between 'cc' versus 'gcc' (see issue 123)
will not use '__thread' in the C code
c/_cffi_backend.c:14:10: fatal error: 'ffi.h' file not found
#include <ffi.h>
^
1 error generated.
Traceback (most recent call last):
File "<string>", line 16, in <module>
File "/Users/cody/virtualenvs/analytics/build/bcrypt/setup.py", line 104, in <module>
"Programming Language :: Python :: 3.3",
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/core.py", line 112, in setup
_setup_distribution = dist = klass(attrs)
File "build/bdist.macosx-10.9-intel/egg/setuptools/dist.py", line 239, in __init__
File "build/bdist.macosx-10.9-intel/egg/setuptools/dist.py", line 264, in fetch_build_eggs
File "build/bdist.macosx-10.9-intel/egg/pkg_resources.py", line 620, in resolve
dist = best[req.key] = env.best_match(req, ws, installer)
File "build/bdist.macosx-10.9-intel/egg/pkg_resources.py", line 858, in best_match
return self.obtain(req, installer) # try and download/install
File "build/bdist.macosx-10.9-intel/egg/pkg_resources.py", line 870, in obtain
return installer(requirement)
File "build/bdist.macosx-10.9-intel/egg/setuptools/dist.py", line 314, in fetch_build_egg
File "build/bdist.macosx-10.9-intel/egg/setuptools/command/easy_install.py", line 593, in easy_install
File "build/bdist.macosx-10.9-intel/egg/setuptools/command/easy_install.py", line 623, in install_item
File "build/bdist.macosx-10.9-intel/egg/setuptools/command/easy_install.py", line 811, in install_eggs
File "build/bdist.macosx-10.9-intel/egg/setuptools/command/easy_install.py", line 1017, in build_and_install
File "build/bdist.macosx-10.9-intel/egg/setuptools/command/easy_install.py", line 1005, in run_setup
distutils.errors.DistutilsError: Setup script exited with error: command 'cc' failed with exit status 1
----------------------------------------
Command python setup.py egg_info failed with error code 1 in /Users/cody/virtualenvs/analytics/build/bcrypt
答案 0 :(得分:81)
不使用sudo和CFLAGS以及CPPFLAGS(pip不需要):
$ brew install pkg-config libffi
$ export PKG_CONFIG_PATH=/usr/local/Cellar/libffi/3.0.13/lib/pkgconfig/
$ pip install bcrypt
答案 1 :(得分:21)
brew install pkg-config libffi
sudo bash
export CFLAGS=-Qunused-arguments
export CPPFLAGS=-Qunused-arguments
export PKG_CONFIG_PATH=/usr/local/Cellar/libffi/3.0.13/lib/pkgconfig/
pip install bcrypt
答案 2 :(得分:15)
Xcode已经为我安装了(正如问题本身所提到的那样,它提供了ffi.h标题),但由于某些原因,没有填充/ usr / include(如Zachary Young所提到的)。我挖了一下,看看为什么/ usr / include没有填充,发现以下命令修复了它:
$ xcode-select --install
答案 3 :(得分:3)
更新26 / Aug / 15
我认为TA的答案更好,因为它是由系统处理的。
首先,我不喜欢安装Brew或Ports,但这是另一个问题。
我一直在尝试pip install cryptography
,这取决于导入ffi.h
的cffi。
我很好奇为什么没有人说他(和我,我相信其他人)已经安装了ffi
Xcode:
locate ffi.h
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/ffi/ffi.h
因为错误特别是关于&#34;没有找到&#34; ffi.h
使用以下构建命令:
c/_cffi_backend.c:14:10: fatal error: 'ffi.h' file not found
#include <ffi.h>
...
...
/usr/bin/clang ...{omitted}... I/usr/include/ffi -I/usr/include/libffi
我有ffi.h
,只是系统认为它应该在/usr/include/...
。
我的/usr/include
目录恰好是空的,并没有链接到任何内容,所以我只是将有问题的目录/文件链接到找不到它的地方:
ln -fs {THAT_XCODE_SDK_FFI_PATH_FROM_ABOVE} /usr/include/ffi
我现在可以安装和构建cffi和加密。
在了解构建链/链接动态方面,我非常新手,如果这很糟糕,我就不明白......所以,请告诉我。