在mac 10.9.6上安装pycrypto出错
我正在尝试安装“fabric”。我用“pip install fabric”命令,但在安装“pycrypto”时出现了问题,安装失败。
我看到它在下载2.6.1版本。我尝试安装更低的版本,但还是出现同样的错误。
用“sudo easy_install fabric”也报了同样的错。
我已经安装了gmplib库,并且在以下位置找到了lib文件:
/usr/lib/libgmp.dylib
/usr/local/lib/libgmp.dylib
pip install fabric
已经满足要求(使用 --upgrade 来升级):fabric 在 /Library/Python/2.7/site-packages
已经满足要求(使用 --upgrade 来升级):paramiko>=1.10.0 在 /Library/Python/2.7/site-packages/paramiko-1.14.1-py2.7.egg (来自 fabric)
正在下载/解压 pycrypto>=2.1,!=2.4(来自 paramiko>=1.10.0->fabric)
下载 pycrypto-2.6.1.tar.gz (446kB): 446kB 已下载
运行 setup.py(路径:/private/tmp/pip_build_root/pycrypto/setup.py)为包 pycrypto 提供 egg_info
已经满足要求(使用 --upgrade 来升级):ecdsa 在 /Library/Python/2.7/site-packages/ecdsa-0.11-py2.7.egg (来自 paramiko>=1.10.0->fabric)
正在安装收集的包:pycrypto
运行 setup.py install 为 pycrypto
检查 gcc... gcc
检查 C 编译器是否工作... 是
检查 C 编译器默认输出文件名... a.out
检查可执行文件的后缀...
检查我们是否在交叉编译... 否
检查目标文件的后缀... o
检查我们是否使用 GNU C 编译器... 是
检查 gcc 是否接受 -g... 是
检查 gcc 选项以接受 ISO C89... 不需要
检查 __gmpz_init 在 -lgmp 中... 是
检查 __gmpz_init 在 -lmpir 中... 否
检查 mpz_powm 是否声明... 是
检查 mpz_powm_sec 是否声明... 是
检查如何运行 C 预处理器... gcc -E
检查 grep 是否处理长行和 -e... /usr/bin/grep
检查 egrep... /usr/bin/grep -E
检查 ANSI C 头文件... 是
检查 sys/types.h... 是
检查 sys/stat.h... 是
检查 stdlib.h... 是
检查 string.h... 是
检查 memory.h... 是
检查 strings.h... 是
检查 inttypes.h... 是
检查 stdint.h... 是
检查 unistd.h... 是
检查 inttypes.h...(缓存)是
检查 limits.h 可用性... 是
检查 limits.h 存在... 是
检查 limits.h... 是
检查 stddef.h 可用性... 是
检查 stddef.h 存在... 是
检查 stddef.h... 是
检查 stdint.h...(缓存)是
检查 stdlib.h...(缓存)是
检查 string.h...(缓存)是
检查 wchar.h 可用性... 是
检查 wchar.h 存在... 是
检查 wchar.h... 是
检查 inline... inline
检查 int16_t... 是
检查 int32_t... 是
检查 int64_t... 是
检查 int8_t... 是
检查 size_t... 是
检查 uint16_t... 是
检查 uint32_t... 是
检查 uint64_t... 是
检查 uint8_t... 是
检查 stdlib.h...(缓存)是
检查 GNU libc 兼容的 malloc... 是
检查 memmove... 是
检查 memset... 是
configure: 创建 ./config.status
config.status: 创建 src/config.h
正在构建 'Crypto.PublicKey._fastmath' 扩展
cc -fno-strict-aliasing -fno-common -dynamic -arch x86_64 -arch i386 -pipe -fno-common -fno-strict-aliasing -fwrapv -DENABLE_DTRACE -DMACOSX -Wall -Wstrict-prototypes -Wshorten-64-to-32 -fwrapv -Wall -Wstrict-prototypes -DENABLE_DTRACE -arch x86_64 -arch i386 -pipe -std=c99 -O3 -fomit-frame-pointer -Isrc/ -I/usr/include/ -I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c src/_fastmath.c -o build/temp.macosx-10.9-intel-2.7/src/_fastmath.o
src/_fastmath.c:83:13: 警告: 隐式转换导致整数精度丢失: 'Py_ssize_t' (即 'long') 到 'int' [-Wshorten-64-to-32]
size = p->ob_size;
~ ~~~^~~~~~~
src/_fastmath.c:86:10: 警告: 隐式转换导致整数精度丢失: 'Py_ssize_t' (即 'long') 到 'int' [-Wshorten-64-to-32]
size = -p->ob_size;
~ ^~~~~~~~~~~
src/_fastmath.c:113:49: 警告: 隐式转换导致整数精度丢失: 'unsigned long' 到 'int' [-Wshorten-64-to-32]
int size = (mpz_sizeinbase (m, 2) + SHIFT - 1) / SHIFT;
~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
src/_fastmath.c:1310:12: 警告: 隐式转换导致整数精度丢失: 'unsigned long' 到 'unsigned int' [-Wshorten-64-to-32]
offset = mpz_get_ui (mpz_offset);
~ ^~~~~~~~~~~~~~~~~~~~~~~
/usr/local/include/gmp.h:840:20: 注意: 从宏 'mpz_get_ui' 扩展
#define mpz_get_ui __gmpz_get_ui
^
src/_fastmath.c:1360:10: 警告: 隐式转换导致整数精度丢失: 'unsigned long' 到 'int' [-Wshorten-64-to-32]
return return_val;
~~~~~~ ^~~~~~~~~~
src/_fastmath.c:1373:27: 警告: 隐式转换导致整数精度丢失: 'unsigned long' 到 'int' [-Wshorten-64-to-32]
rounds = mpz_get_ui (n) - 2;
~ ~~~~~~~~~~~~~~~^~~
src/_fastmath.c:1433:9: 警告: 无符号表达式与 0 的比较总是为假 [-Wtautological-compare]
else if (result < 0)
~~~~~~ ^ ~
src/_fastmath.c:1621:20: 警告: 无符号表达式与 0 的比较总是为假 [-Wtautological-compare]
else if (result < 0)
~~~~~~ ^ ~
9 个警告生成。
src/_fastmath.c:1545:20: 警告: 无符号表达式与 0 的比较总是为假 [-Wtautological-compare]
else if (result < 0)
~~~~~~ ^ ~
src/_fastmath.c:1621:20: 警告: 无符号表达式与 0 的比较总是为假 [-Wtautological-compare]
else if (result < 0)
~~~~~~ ^ ~
2 个警告生成。
这是我执行“fab”时遇到的错误:
追踪(最近的调用最后):
文件 "/usr/local/bin/fab",第 5 行,
from pkg_resources import load_entry_point
文件 "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources.py",第 2603 行,
working_set.require(requires)
文件 "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources.py",第 666 行,
needed = self.resolve(parse_requirements(requirements))
文件 "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources.py",第 565 行,
raise DistributionNotFound(req) # XXX 在这里放更多信息
pkg_resources.DistributionNotFound: pycrypto>=2.1,!=2.4
1 个回答
我在安装了xcode之后搞定了。
一旦安装了xcode,pycrypto就自动安装上了,现在fabric也能正常工作了。
(我应该在提问的时候提到我对MAC还是个新手)