PyCrypto在OSX Mavericks下无法工作

3

尝试安装和使用pycrypto。在安装过程中没有出现任何错误,因此我无法进一步进行故障排除。

我运行了“test”并得到以下错误,但找不到解决方法。

顺便说一下,我已经安装了XCode和命令行工具。

mac:pycrypto-2.6.1 rajivvishwa$ export ARCHFLAGS='-arch i386 -arch x86_64'
mac:pycrypto-2.6.1 rajivvishwa$ sudo python setup.py build
running build
running build_py
running build_ext
running build_configure
warning: GMP or MPIR library not found; Not building Crypto.PublicKey._fastmath.
mac:pycrypto-2.6.1 rajivvishwa$ sudo python setup.py install
running install
running build
running build_py
running build_ext
running build_configure
warning: GMP or MPIR library not found; Not building Crypto.PublicKey._fastmath.
running install_lib
running install_egg_info
Removing /System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/pycrypto-2.6.1-py2.6.egg-info
Writing /System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/pycrypto-2.6.1-py2.6.egg-info

mac:pycrypto-2.6.1 rajivvishwa$ sudo python setup.py test
running test
.......................................................................................................................................................................................................... SelfTest: You can ignore the RandomPool_DeprecationWarning that follows.
build/lib.macosx-10.9-intel-2.6/Crypto/Util/randpool.py:40: RandomPool_DeprecationWarning: This application uses RandomPool, which is BROKEN in older releases.  See http://www.pycrypto.org/randpool-broken
  RandomPool_DeprecationWarning)
..........E...................
======================================================================
ERROR: Test that mpzToLongObj and longObjToMPZ (internal functions) roundtrip negative numbers correctly.
----------------------------------------------------------------------
Traceback (most recent call last):
  File "build/lib.macosx-10.9-intel-2.6/Crypto/SelfTest/Util/test_number.py", line 283, in test_negative_number_roundtrip_mpzToLongObj_longObjToMPZ
    k = number._fastmath.rsa_construct(n, e)
AttributeError: 'NoneType' object has no attribute 'rsa_construct'

----------------------------------------------------------------------
Ran 1033 tests in 150.196s

FAILED (errors=1)
Traceback (most recent call last):
  File "setup.py", line 456, in <module>
    core.setup(**kw)
  File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/distutils/core.py", line 152, in setup
    dist.run_commands()
  File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/distutils/dist.py", line 975, in run_commands
    self.run_command(cmd)
  File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/distutils/dist.py", line 995, in run_command
    cmd_obj.run()
  File "setup.py", line 336, in run
    SelfTest.run(module=moduleObj, verbosity=self.verbose, stream=sys.stdout, config=self.config)
  File "build/lib.macosx-10.9-intel-2.6/Crypto/SelfTest/__init__.py", line 74, in run
    raise SelfTestError("Self-test failed", result)
Crypto.SelfTest.SelfTestError: ('Self-test failed', <unittest._TextTestResult run=1033 errors=1 failures=0>)

mac:pycrypto-2.6.1 rajivvishwa$ python
Python 2.6.8 (unknown, Aug 25 2013, 00:04:29) 
[GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.0.68)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import Crypto
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named Crypto
3个回答

3

如果你是通过MacPorts运行Python的话,请尝试以下操作:

sudo port install py27-crypto

然后导入Crypto应该就可以了。


我尝试了一下,看起来pycrypto现在已经安装在python2.7中,而不是我的默认python中。我能用macports在默认python中安装吗? - rajivvishwa
不,你不能使用MacPorts,MacPorts是用于替代Python的版本。对于默认的Python,你应该尝试使用brew install。 - bistaumanga
由于Mavericks更新,我的brew出了问题。http://stackoverflow.com/questions/19635804。 - rajivvishwa

2
如果您想在最新的OSX上安装pycrypto,则需要将“clang”设置为configure将使用的C编译器。这是通过CC环境变量完成的。
在virtualenv中调试的方法:
sudo easy_install virtualenv==1.10.1
virtualenv venv
export CC=clang
venv/bin/pip install --no-clean pycrypto
cat venv/build/pycrypto/config.log

0

这似乎是Mac文件系统中不区分大小写的偏好设置。Linux区分大小写,我猜测软件包所有者使用Linux创建了该软件包。

我首先安装了加密软件包(作为最后的手段使用了sudo)。

sudo pip install pycrypto

pip install crypto

然后只需将小写的包名称重命名为大写。

/path/to/venv/lib/python2.7/site-packages中,将crypto重命名为Crypto


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接