Ошибка при установке bcrypt with pip в OS X: не удается найти ffi.h (установлен libffi)

Я получаю эту ошибку при попытке установить bcrypt с помощью pip. У меня есть libffi, установленный в пару мест (Xcode OS X SDK и из homebrew), но я не знаю, как сказать, что искать его. Какие-либо предложения?

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 

Без использования 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 

Я, наконец, получил эту работу со следующей информацией с небольшой помощью из этих сообщений :

 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 

Xcode уже был установлен для меня (как упоминалось в самом вопросе, что он предоставляет заголовок ffi.h), но по какой-то причине это не заполняло / usr / include (как упоминал Захарий Янг). Я вырыл, чтобы понять, почему / usr / include не был заполнен, и обнаружил, что следующая команда исправила его:

 $ xcode-select --install 

Отсутствует / usr / include после установки Yosemite и Xcode?

Обновление 26 / Aug / 15

Я думаю, что ответ TA лучше в том, что он обрабатывается системой.


Во-первых, я не хочу устанавливать Brew или Ports, но это еще одна проблема.

Я пытался pip install cryptography , которая зависит от cffi, которая импортирует ffi.h

Мне любопытно, почему никто не сказал, что он (и я, и я верю другим) установил ffi с Xcode:

 locate ffi.h /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/ffi/ffi.h 

поскольку ошибка в частности касается «не нахождения» 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 и криптографию.

Я очень новичок, когда дело доходит до понимания динамики цепочек построения / связей, и если это плохо, я не понимаю … так что, пожалуйста, дайте мне знать.