Pcryptでbcryptをインストールしようとすると、このエラーが発生します。 libffiはいくつかの場所(Xcode OS X SDK、およびhomebrewから)にインストールされていますが、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
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
Xcodeはすでにインストールされています(ffi.hヘッダーを提供するという質問自体で述べたように)が、何らかの理由で/ usr/includeを追加しませんでした(Zachary Youngが述べたように)。/usr/includeにデータが入力されなかった理由を調べてみたところ、次のコマンドで修正されたことがわかりました。
$ xcode-select --install
更新日2015年8月26日
TAの答えは、システムによって処理されるという点で優れていると思います。
まず、BrewまたはPortsをインストールするのが嫌いですが、それは別の問題です。
私はpip install cryptography
、これはcffiに依存し、インポートするffi.h
。
Xcodeでffi
がインストールされていると彼(および私、そして私は他の人も信じている)が誰も言及していないのはなぜか不思議です。
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と暗号化をインストールしてビルドできます。
ビルドチェーン/リンクダイナミクスを理解することになると、私は非常に初心者であり、これが悪い場合、私はそれを取得しません...だから、教えてください。