the pkg not found python macos pip bcrypt libffi

python - pkg - libffi pc



Error al instalar bcrypt con pip en OS X: no se puede encontrar ffi.h(se instala libffi) (4)

Sin usar sudo y CFLAGS y CPPFLAGS (innecesarios para pip):

$ brew install pkg-config libffi $ export PKG_CONFIG_PATH=/usr/local/Cellar/libffi/3.0.13/lib/pkgconfig/ $ pip install bcrypt

Me aparece este error al intentar instalar bcrypt con pip. Tengo libffi instalado en un par de lugares (el Xcode OS X SDK y homebrew), pero no sé cómo decirle a pip que lo busque. ¿Alguna sugerencia?

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


Actualización 26 / Aug / 15

Creo que la respuesta de TA es mejor ya que es manejada por el sistema.

En primer lugar, detestaba instalar Brew o Ports, pero ese es otro problema.

He intentado pip install cryptography , que depende de cffi, que importa ffi.h

Tengo curiosidad por saber por qué nadie se dirigió a él (y a mí, y a mí, a otros) y me he instalado con Xcode:

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

ya que el error es específicamente sobre "no encontrar" ffi.h con el siguiente comando de compilación:

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

Tengo ffi.h , es solo que el sistema cree que debería estar en /usr/include/...

Mi directorio /usr/include está vacío y no está vinculado a nada, así que simplemente vinculé el directorio / archivo en cuestión, al lugar donde no se encuentra:

ln -fs {THAT_XCODE_SDK_FFI_PATH_FROM_ABOVE} /usr/include/ffi

Ahora puedo instalar y construir cffi y criptografía.

Soy muy novato cuando se trata de entender la dinámica de la cadena de construcción / vinculación, y si esto es malo, no lo entiendo ... así que, por favor, háganmelo saber.


Finalmente lo conseguí trabajando con lo siguiente con un poco de ayuda de estas publicaciones :

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 ya estaba instalado para mí (como se menciona en la pregunta en sí mismo que sí proporciona el encabezado ffi.h), pero por alguna razón eso no completó / usr / include (como mencionó Zachary Young). Busqué para ver por qué el / usr / include no estaba poblado y encontré que el siguiente comando lo solucionó:

$ xcode-select --install

¿Falta / usr / include después de la instalación de Yosemite y Xcode?