在Windows上安装PyCrypto时出现错误

16

我正在尝试在我的计算机上安装PyCrypto 2.6库,但我一直收到以下错误信息。

D:\Software\Python\package\pycrypto-2.6>python setup.py build
running build
running build_py
running build_ext
warning: GMP or MPIR library not found; Not building Crypto.PublicKey._fastmath.

building 'Crypto.Random.OSRNG.winrandom' extension
error: Unable to find vcvarsall.bat

我的系统是Windows 8 Pro 64位,安装了Visual Studio Enterprise 2012和Python 3.3。

为了修复错误,我尝试按照fmuecke在帖子error: Unable to find vcvarsall.bat中的建议设置环境变量VS90COMNTOOLS=%VS110COMNTOOLS%,但对我没用。

请问有没有人能够建议我如何解决这个错误。

顺便说一下,我不想安装VC2008等。


Python 3.3是使用VC2010构建的。一般规则是扩展必须使用与Python相同的VC进行构建。我建议您安装VC2010,尝试使用它,并相应更新问题。 - SquareRootOfTwentyThree
我在我的问题中已经提到,安装另一个Visual Studio/VC实例对我来说不是一个选项。 - Khurram Majeed
这对我有用 https://dev59.com/JFgR5IYBdhLWcg3wBpdT#41843310 - Stijn Van Antwerpen
8个回答

13

我成功地安装了 PyCrypto 2.6,使用的是来自 The Voidspace Python ModulesPython3.3 预构建二进制包

这并不能解决那些没有预构建二进制包的其他软件包出现的 error: Unable to find vcvarsall.bat 错误。

不过它消除了构建 PyCrypto 包的需要,使我可以在系统上安装 PyCrypto 而不会出现错误。


2
我使用了 easy_install pycrypto-2.6.win32-py3.3.exe 进行安装,但是当我尝试 from Crypto.PublicKey import RSA 时,出现了以下错误:from . import winrandom ImportError: DLL load failed: 找不到指定的模块。 - deed02392

5

1
仅提供链接的答案如果链接失效并不特别有帮助 - 如果您假设链接已经失效,那么我还能从您的答案中获得什么?我只知道我需要先下载某些东西,然后才能按照您的指示进行。 - stwalkerster
作为一条注释,下载的是“Microsoft Visual C++ Compiler for Python 2.7”,这对我解决了问题。(Visual Studio 2015 Community Edition没有) - user
完全成功了,我必须说我之前安装了Python 3.3,但是我不得不删除所有内容并从头开始安装Python 2.7。安装完成后,一切都正常工作了。谢谢! - Ivan Perez
你如何执行“setuptools > 6.0”这一部分? - m0a

4
我知道这是一个老问题,但我今天花了很多时间来让paramiko工作。我想使用Python 3.4,在voidspace上没有为3.4构建的预编译二进制文件。
最后,我通过安装“Microsoft Studio Express 2010 C++”并从pycrypto 2.7文件夹运行来获得了一个可用的pycrypto。
python setup.py build --compiler msvc
python setup.py install
python setup.py bdist_wininst

所有与环境变量有关的“技巧”对我都不起作用。

如果对某人有帮助,感谢应归功于: http://flintux.wordpress.com/2014/04/30/pycrypto-for-python-3-4-on-windows-7-64bit/


3

对于Python 3.5,您可以按照以下步骤操作:

从此网站安装PyCrypto二进制文件: https://github.com/sfbahr/PyCrypto-Wheels

最佳方式是:

64位Python

c:\Python35\Scripts\pip.exe install --use-wheel --no-index --find-links=https://github.com/sfbahr/PyCrypto-Wheels/raw/master/pycrypto-2.6.1-cp35-none-win_amd64.whl pycrypto

32位Python

c:\Python35\Scripts\pip.exe install --use-wheel --no-index --find-links=https://github.com/sfbahr/PyCrypto-Wheels/raw/master/pycrypto-2.6.1-cp35-none-win32.whl pycrypto

当然,将c:\Python35\Scripts\pip.exe替换为您的python pip路径。

要了解您的python版本,请运行python并查看显示在括号中的架构:

C:\Users\utilisateur>python Python 3.5.1 |Anaconda 4.0.0 (64-bit)| (default, Feb 16 2016, 09:49:46) [MSC v.1900 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information.

希望这可以帮助您。


2
您可以安装mingw64,并从PyCrypto未压缩文件目录中运行以下命令: python setup.py build --compiler=mingw32

2

2021年更新的答案:(其他答案均已过时)

Python 2.7已经终止生命周期,微软已经移除了Visual C++ 8.0编译器的下载链接,这就是编译本地Python 2.7模块所需的编译器(后来被称为“Python 2.7的C++编译器”,VCForPython27.msi)。因此,pip install pycrypto不再起作用。

要自行查看,请参见此答案,其中包含一个已过期的下载链接。请勿在GitHub上搜索VCForPython27 - 您会找到项目,但它们不是官方的Microsoft项目,因此您可能希望远离这些项目。

如果您发现自己处于这种情况中,那么认真考虑迁移到Python 3,并不要从随机网站或Web存档链接下载旧版本的PyCrypto或Visual C++ 8.0,特别是因为这是一个应该保持最新的加密库。


0

如果您使用的是VS 2010

SET VS90COMNTOOLS=%VS100COMNTOOLS%

如果您使用的是VS 2012

SET VS90COMNTOOLS=%VS110COMNTOOLS%

如果您使用的是VS 2013

SET VS90COMNTOOLS=%VS120COMNTOOLS%

然后执行python setup.py install


0

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