Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Error installing bcrypt with pip on OS X: can't find ffi.h (libffi is installed)

I'm getting this error when trying to install bcrypt with pip. I have libffi installed in a couple places (the Xcode OS X SDK, and from homebrew), but I don't know how to tell pip to look for it. Any suggestions?

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 
like image 538
Cody Avatar asked Apr 05 '14 00:04

Cody


2 Answers

Without using sudo and CFLAGS and CPPFLAGS (unnecessary for pip):

$ brew install pkg-config libffi $ export PKG_CONFIG_PATH=/usr/local/Cellar/libffi/3.0.13/lib/pkgconfig/ $ pip install bcrypt 
like image 135
nathancahill Avatar answered Sep 17 '22 12:09

nathancahill


I finally got it working with the following with a little help from these posts:

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 
like image 40
Cody Avatar answered Sep 18 '22 12:09

Cody