PyCrypto在Windows XP上未完全安装

29 投票
3 回答
55376 浏览
提问于 2025-04-15 15:44

我在Windows XP的命令行里运行了 python setup.py install,结果显示如下:

running install
running build
running build_py
running build_ext
warning: GMP library not found; Not building Crypto.PublicKey._fastmath.
building 'Crypto.Random.OSRNG.winrandom' extension
error: None

当我尝试运行一个脚本,里面有 import Crypto.Cipher.AES 这行代码时,它不工作,提示如下:

ImportError: cannot import name AES

我该怎么解决这个问题呢?

3 个回答

0

你可以使用 PyPM 来安装 pycrypto(这是一个已经打包好的二进制文件):

C:> pypm install pycrypto
Ready to perform these actions:
The following packages will be installed:
 pycrypto-2.0.1
Get: [pypm.activestate.com] pycrypto 2.0.1-1
Installing pycrypto-2.0.1

要查看已安装的文件,可以输入:

C:> pypm files pycrypto
C:\Users\sridharr\AppData\Roaming\Python\Python26
C:\Users\sridharr\AppData\Roaming\Python\Python26\site-packages
C:\Users\sridharr\AppData\Roaming\Python\Python26\site-packages\Crypto
C:\Users\sridharr\AppData\Roaming\Python\Python26\site-packages\Crypto\Cipher
C:\Users\sridharr\AppData\Roaming\Python\Python26\site-packages\Crypto\Cipher\AES.pyd
C:\Users\sridharr\AppData\Roaming\Python\Python26\site-packages\Crypto\Cipher\ARC2.pyd
C:\Users\sridharr\AppData\Roaming\Python\Python26\site-packages\Crypto\Cipher\ARC4.pyd
C:\Users\sridharr\AppData\Roaming\Python\Python26\site-packages\Crypto\Cipher\Blowfish.pyd
C:\Users\sridharr\AppData\Roaming\Python\Python26\site-packages\Crypto\Cipher\CAST.pyd
C:\Users\sridharr\AppData\Roaming\Python\Python26\site-packages\Crypto\Cipher\DES.pyd
C:\Users\sridharr\AppData\Roaming\Python\Python26\site-packages\Crypto\Cipher\DES3.pyd
C:\Users\sridharr\AppData\Roaming\Python\Python26\site-packages\Crypto\Cipher\IDEA.pyd
C:\Users\sridharr\AppData\Roaming\Python\Python26\site-packages\Crypto\Cipher\RC5.pyd
C:\Users\sridharr\AppData\Roaming\Python\Python26\site-packages\Crypto\Cipher\XOR.pyd
C:\Users\sridharr\AppData\Roaming\Python\Python26\site-packages\Crypto\Cipher\__init__.py
C:\Users\sridharr\AppData\Roaming\Python\Python26\site-packages\Crypto\Hash
C:\Users\sridharr\AppData\Roaming\Python\Python26\site-packages\Crypto\Hash\HMAC.py
C:\Users\sridharr\AppData\Roaming\Python\Python26\site-packages\Crypto\Hash\MD2.pyd
C:\Users\sridharr\AppData\Roaming\Python\Python26\site-packages\Crypto\Hash\MD4.pyd
C:\Users\sridharr\AppData\Roaming\Python\Python26\site-packages\Crypto\Hash\MD5.py
C:\Users\sridharr\AppData\Roaming\Python\Python26\site-packages\Crypto\Hash\RIPEMD.pyd
C:\Users\sridharr\AppData\Roaming\Python\Python26\site-packages\Crypto\Hash\SHA.py
C:\Users\sridharr\AppData\Roaming\Python\Python26\site-packages\Crypto\Hash\SHA256.pyd
C:\Users\sridharr\AppData\Roaming\Python\Python26\site-packages\Crypto\Hash\__init__.py
C:\Users\sridharr\AppData\Roaming\Python\Python26\site-packages\Crypto\Protocol
C:\Users\sridharr\AppData\Roaming\Python\Python26\site-packages\Crypto\Protocol\AllOrNothing.py
C:\Users\sridharr\AppData\Roaming\Python\Python26\site-packages\Crypto\Protocol\Chaffing.py
C:\Users\sridharr\AppData\Roaming\Python\Python26\site-packages\Crypto\Protocol\__init__.py
C:\Users\sridharr\AppData\Roaming\Python\Python26\site-packages\Crypto\PublicKey
C:\Users\sridharr\AppData\Roaming\Python\Python26\site-packages\Crypto\PublicKey\DSA.py
C:\Users\sridharr\AppData\Roaming\Python\Python26\site-packages\Crypto\PublicKey\ElGamal.py
C:\Users\sridharr\AppData\Roaming\Python\Python26\site-packages\Crypto\PublicKey\RSA.py
C:\Users\sridharr\AppData\Roaming\Python\Python26\site-packages\Crypto\PublicKey\__init__.py
C:\Users\sridharr\AppData\Roaming\Python\Python26\site-packages\Crypto\PublicKey\pubkey.py
C:\Users\sridharr\AppData\Roaming\Python\Python26\site-packages\Crypto\PublicKey\qNEW.py
C:\Users\sridharr\AppData\Roaming\Python\Python26\site-packages\Crypto\Util
C:\Users\sridharr\AppData\Roaming\Python\Python26\site-packages\Crypto\Util\RFC1751.py
C:\Users\sridharr\AppData\Roaming\Python\Python26\site-packages\Crypto\Util\__init__.py
C:\Users\sridharr\AppData\Roaming\Python\Python26\site-packages\Crypto\Util\number.py
C:\Users\sridharr\AppData\Roaming\Python\Python26\site-packages\Crypto\Util\randpool.py
C:\Users\sridharr\AppData\Roaming\Python\Python26\site-packages\Crypto\Util\test.py
C:\Users\sridharr\AppData\Roaming\Python\Python26\site-packages\Crypto\__init__.py
C:\Users\sridharr\AppData\Roaming\Python\Python26\site-packages\Crypto\test.py
C:\Users\sridharr\AppData\Roaming\Python\Python26\site-packages\pycrypto-2.0.1-py2.6.egg-info

要安装 PyPM,你需要先安装 ActivePython

3

对于像我一样使用64位Windows 7的朋友们:

简短版本:
按照这个链接里的说明来做。

详细版本:

首先,安装VC++ 2008 SP1 Express。你可以从这里下载。

你还需要Windows SDK,特别是Win7 + Net 3.5 SDK

也许你的Python版本已经解决了这个问题,如果没有的话,可以从问题页面下载差异文件。

下载patch.py(或者其他可以处理差异文件的工具)。

如果你把patch.py和差异文件下载到了c:\Python27,那么只需运行:

python patch-11.01.py vcvars3.diff

最后,使用pip进行安装:

pip install pycrypto
43

在Windows系统上,安装PyCrypto可能更简单的方法是使用现成的安装程序。Voidspace网站上有适用于Python 2.2到2.7的PyCrypto 2.1和2.3的安装包

撰写回答