如何在Windows上安装PyCrypto?


139

我已经阅读了所有其他Google来源和SO线程,但没有任何效果。

Python 2.7.3 32bit安装在上Windows 7 64bit。下载,解压缩然后尝试在以下位置安装PyCrypto结果"Unable to find vcvarsall.bat".

因此,我安装了MinGW,并将其作为选择的编译器安装在安装线上。但是然后我得到了错误"RuntimeError: chmod error".

我该如何解决这个问题?我试过使用pip,它给出相同的结果。我找到了一个预构建的PyCrypto 2.3二进制文件并进行了安装,但是在系统上找不到该文件(无法正常工作)。

有任何想法吗?



16
如果您只想安装它,只需下载二进制PyCrypto安装程序
bobobobo 2012年

12
这是非常大胆的建议,从海外的未知服务器上安装二进制加密程序包……
Darren Ringer 2015年

即使我最终选择了答案,但最终我还是屈服了并且设法自己构建了该程序包(尽管可以肯定的是,我没有费心去验证任何东西上的任何签名,因为实际上,我们是否真的安全吗?)偏执和冷漠然而,除了以下链接之外,以下链接解决了我所有最棘手的问题,并使过程变得轻松
达伦·林格

4
PyCrypto已死。作者将其删除了一段时间。github.com/dlitz/pycrypto/issues/173-史密斯·约翰斯
Smit Johnth)'16

Answers:


184

如果尚未安装与Python.org分发的Visual Studio二进制文件兼容的C / C ++开发环境,则应坚持仅安装纯Python软件包或可用于Windows二进制文件的软件包。

幸运的是,有适用于Windows的PyCrypto二进制文件:http ://www.voidspace.org.uk/python/modules.shtml#pycrypto

更新:
正如@Udi在下面的注释中建议的那样,以下命令也将安装pycrypto并可以在其中使用virtualenv

easy_install http://www.voidspace.org.uk/python/pycrypto-2.6.1/pycrypto-2.6.1.win32-py2.7.exe

注意,请从此列表中选择与您的设置相关的链接

如果您正在寻找适用于Python 3.5的版本,请参阅python 3.5上的PyCrypto


28
您可以使用easy_install从URL安装二进制文件:easy_install http://www.voidspace.org.uk/downloads/pycrypto26/pycrypto-2.6.win32-py2.7.exe
Udi

voidspace.org.uk/python/modules.shtml#pycrypto上的安装程序为我工作。提示:如果您无意中运行了64位安装程序,但拥有32位版本的Python 2.7,则安装程序将失败,并显示警告“需要在注册表中找不到Python版本2.7”。
史蒂夫·萨波特塔

1
gui安装程序对我而言失败。easy_install成功
pscheit 2014年

@Udi为什么您需要exe的easy_install?
史密斯·约翰斯

@SmitJohnth easy_install会将软件包安装在virtualenv中(如果有的话),并将禁止所有图形交互(以自动化或节省时间)。
Udi 2014年

32

Microsoft最近最近发布了用于Python 2.7的独立的专用Microsoft Visual C ++编译器。如果您使用的是Python 2.7,只需安装该编译器和Setuptools 6.0或更高版本,大多数具有C扩展名的软件包现在都可以轻松编译。


哇,真有趣。但是仍然是84 Mb。还有一点为时已晚,请参阅我有关滚轮的答案。
史密斯·约翰斯

1
即使使用滚轮,这还是比当您想从源代码构建东西或使用没有滚轮的模块时,将头撞到VS 2008和vcvarsall.bat更好的选择。Python的MSVC可能不会长期存在,但是现在非常有用。
GrandOpener

1
仍然是我找到的最简单的解决方案;我一直讨厌不得不依靠随机(对我而言)网站上的预构建二进制文件。
Myk Willis

28

经过数年之久,python终于同意了一种二进制发行版wheel,该发行版允许在Windows上安装甚至二进制扩展,而无需使用简单的编译器pip install packagename。有一种流行的软件包列表及其状态。Pycrypto还不存在,例如lxml,PySide和Scrapy。

2015年11月编辑pip uninstall pycryptopip install pycryptodome。这是pycrypto具有新功能的前叉,并且支持车轮。它取代了pycrypto,因此现有代码将继续起作用(请参阅https://pycryptodome.readthedocs.org/en/latest/src/examples.html


20

对于VS2010:

SET VS90COMNTOOLS=%VS100COMNTOOLS%

对于VS2012:

SET VS90COMNTOOLS=%VS110COMNTOOLS%

然后致电:

pip install pyCrypto 

1
对于VS2013:SET VS90COMNTOOLS =%VS120COMNTOOLS%
Jake1164

2
尽管这在某些情况下可能有效,但这不是解决方案。您需要确保所有依赖项都使用与Python相同的编译器进行编译!
Daniel van Flymen,2015年

1
VS2017怎么样?!我应该设置什么?
mahshid.r

1
@ mahshid.r,您可以检查VSxxxCOMNTOOLS的环境变量并获取变量名称,然后将VS90COMNTOOLS变量设置为VSxxxCOMNTOOLS值。在CMD中:1.“ SET VS90COMNTOOLS =%VS140COMNTOOLS%” 2. pip install pyCrypto
Oriel Cochavi

18

一般来说

vcvarsall.bat是Visual C ++编译器的一部分,您需要安装要安装的内容。如果您的Python是使用Visual Studio工具链编译的,甚至不要尝试处理MingGW,反之亦然。甚至Microsoft工具链的版本也很重要。用VS 2008编译的Python不能与用VS 2010编译的扩展一起使用!

您必须使用与Python版本相同的编译器来编译PyCrypto。Google的“无法找到vcvarsall.bat”,因为这是问题的根源,这是在Windows上编译Python扩展的一个非常普遍的问题。

在使用此链接的任何系统上,要获得正确的信息,都需要大量的信息和大量的阅读。

注意使用Visual Studio 2010或不使用Visual Studio 2008

据我所知,以下仍然是正确的。这是在2010年6月的链接中发布的,该链接是指尝试针对python.org上可用的Python安装程序使用VS 2010 Express构建扩展。

如果这样做,请小心。python.org的Python 2.6和2.7是使用Visual Studio 2008编译器构建的。您将需要使用与Python相同的CRT(msvcr90.dll)进行链接。

Visual Studio 2010 Express链接到错误的CRT版本:msvcr100.dll。

如果执行此操作,则还必须使用Visual Studio 2010 Express重新构建Python。您不能将标准的Python二进制安装程序用于Windows。您也不能使用使用与Visual Studio 2010(Express)不同的编译器构建的任何C / C ++扩展。

意见:这是我放弃Windows从事OSX的所有重要开发工作的原因之一!


2
感谢您的见解。但是,天哪,真的一定是这么乏味的(沮丧是针对蟒蛇神,而不是针对自己)吗?我只是尝试通过setup.py和pip安装另一个软件包(mcrypt),都退出并出现错误。Windows用户如何安装软件包?他们都必须下载VS 2008 Express吗?(我有VS 2010,我想它做不到)。
Coldblackice

1
不,不是;在OSX或Linux上并非如此。在Windows中,您可以为默认的Python发行版安装预编译的二进制文件(如果可以找到的话),由于美国的出口限制,通常无法使用加密技术。但是,您真的要安装自己没有从源代码编译的加密库吗?那有多安全,我的意思是说您真的怎么知道他们没有受到某种程度的损害?

“意见:这是我放弃Windows从事OSX的所有重要开发工作的原因之一!” 是的...我在设备上没有任何C编译器之前就下载了python ...然后后来我得到了Visual Studio 2013来对Visual Basic进行一些处理...然后我得到了MinGW,以便可以使用GCC在Windows上编译C。简而言之,尽管这可能是我的错,但我不知道python将尝试使用哪种开发环境。幸运的是,可以在线下载二进制文件(包括pycrypto)来加载python软件包。
trevorKirkby

15

PyCryptodomePyCrypto的几乎兼容的分支,带有pypi上的Windows轮子。

您可以使用以下简单的方法安装它:

pip install pycryptodome

该网站还包含使用Microsoft编译器从源进行构建的说明。


6

我设法pycrypto通过使用MinGW32和进行编译MSYS。假定您已安装pipeasy_install安装。

这是我的做法:

1)安装MinGW32。为了便于说明,我们假设它已安装在中C:\MinGW。我建议使用安装程序时,选择. MSYS应该随其一起安装的C ++编译器MinGW

2)添加c:\mingw\bin,c:\mingw\mingw32\bin,C:\MinGW\msys\1.0, c:\mingw\msys\1.0\bin and c:\mingw\msys\1.0\sbin到您的中%PATH%。如果您不熟悉,这篇文章会很有帮助。

3)从搜索栏中运行msys,然后MSYS终端将打开。对于熟悉的人Cygwin,它的工作方式类似。

4)pip install pycrypto在此之后,应从MSYS终端内部正常运行。


您的解决方案似乎缺少一些步骤。您可能需要详细说明此解决方案。
Rusty Weber

5

对于Windows 7:

要在Windows中安装Pycrypto,

在命令提示符中尝试此操作,

设置路径= C:\ Python27 \ Scripts(即easy_install所在的路径)

然后执行以下命令

easy_install pycrypto

对于Ubuntu:

试试这个,

从“ https://pypi.python.org/pypi/pycrypto ” 下载Pycrypto

然后使用终端将当前路径更改为下载路径,并且用户应为root:

例如:root @ xyz-virtual-machine:〜/ pycrypto-2.6.1#

然后使用终端执行以下命令:

python setup.py安装

对我有用。希望为所有人服务。


我在Windows 7上运行了此程序,第一次遇到错误:“错误:安装脚本退出并出现错误:需要Microsoft Visual C ++ 9.0(无法找到vcvarsall.bat)。请从aka.ms/vcpython27中获取它”。安装后,再次运行该命令,这一次它起作用了。
2016年

5

对于那些正在寻找python 3.4的人,我发现了一个可以正常使用的安装程序的git repo。这是x64的直接链接x32


4

可以使用Windows 7 SDK工具包构建PyCrypto。Windows 7 SDK有两个版本。原始版本(针对.Net 3.5)包括VS 2008命令行编译器。可以同时安装32位和64位编译器。

第一步是编译mpir以提供快速算法。我已经记录了在gmpy库中使用的过程。可以在sdk_build中找到使用SDK编译器构建mpir的详细说明。

在DOS提示符下使用SDK编译器的关键步骤是:

1)根据需要运行vcvars32.bat或vcvars64.bat。

2)在提示符下,执行“ set MSSdk = 1”

3)在提示符下,执行“ set DISTUTILS_USE_SDK = 1”

假设C代码没有其他问题,这应该可以使“ python setup.py install”成功。但是我模糊地记得我不得不编辑几个PyCrypto文件来启用mpir并找到mpir库,但是目前我没有Windows系统。我将需要几天的时间来重新创建这些步骤。如果您到那时还没有报告成功,我将发布PyCrypto步骤。这些步骤将假定您能够编译mpir。

我希望这有帮助。



3

因此,我安装了MinGW,并将其作为选择的编译器安装在安装线上。但是,然后我得到错误“ RuntimeError:chmod错误”。

"RuntimeError: chmod error"发生此错误是因为安装脚本找不到chmod命令。

我该如何解决这个问题?

您只需要将MSYS二进制文件添加到PATH并重新运行安装脚本即可

(注意:MinGW随MSYS一起提供)

例如,如果我们在文件夹中 C:\<..>\pycrypto-2.6.1\dist\pycrypto-2.6.1>

C:\.....>set PATH=C:\MinGW\msys\1.0\bin;%PATH%
C:\.....>python setup.py install

可选:在重新运行脚本之前,您可能需要清理:

`C:\<..>\pycrypto-2.6.1\dist\pycrypto-2.6.1> python setup.py clean`

3
  1. 转到适用于Python 2.7的Microsoft Visual C ++编译器 ”,然后根据“系统要求”继续操作(这是我按照以下步骤进行的工作)。

  2. 安装setuptools(6.0或更高版本需要Python来自动检测setuptools的这个编译器包) 或者通过: pip install setuptools 下载“setuptools的自举安装”源来自于你的filestystem为“ez_python.py”,保存这个文件somwhere与安装:python ez_python.py

  3. 安装滚轮(建议使用滚轮来生产预构建的二进制软件包)。您可以使用以下方法安装它:pip install wheel

  4. 打开Windows提升的命令提示符cmd.exe(带有“以管理员身份运行”),为所有用户安装“适用于Python 2.7的Microsoft Visual C ++编译器”。您可以使用以下命令来执行此操作:msiexec / i C:\users\jozko\download\VCForPython27.msi ALLUSERS=1仅使用您自己的文件路径:msiexec /i <path to MSI> ALLUSERS=1

  5. 现在,您应该能够使用以下命令安装pycrypto: pip install pycrypto


3

如果您在Windows上并且正在努力安装Pycrypcto,请使用:pip install pycryptodome。它像奇迹一样运作,比起进行大量的配置和调整将使您的生活更加轻松。


2

这可能不是最佳解决方案,但是您可以从MS下载并安装免费的Visual C ++ Express软件包。这将为您提供编译PyCrypto代码所需的C ++编译器。


2

我的答案可能与此处提到的问题无关,但是我对Python 3.4遇到了同样的问题,其中Crypto.Cipher不是有效的导入。所以我尝试安装PyCrypto并遇到问题。

经过研究,我发现3.4应该使用pycryptodome

我使用pycharm安装pycryptodome,效果很好。

Crypto.Cipher导入AES


1

因此,我安装了MinGW,并将其作为选择的编译器安装在安装线上。但是,然后我得到错误“ RuntimeError:chmod错误”。

您需要在MinGW下安装msys软件包

在此处输入图片说明

并在PATH env变量中添加以下条目。

  • C:\MinGW\bin
  • C:\MinGW\msys\1.0\bin [在这里您将找到chmod可执行文件]

然后从正常的Windows命令提示符下运行命令。


0

由于奇怪的法律原因,二进制文件无法正常发布。空隙空间通常是最好的第二个来源。但是由于相当长的一段时间,voidspace维护程序没有更新。使用[ https://www.dropbox.com/s/n6rckn0k6u4nqke/pycrypto-2.6.1.zip?dl=0]中的压缩文件


2
从Dropbox下载二进制文件。
史密斯·约翰斯

我下载了二进制文件并使用VirusTotal对其进行了扫描。当然,这仅意味着它没有病毒,并不意味着它没有加密后门。幸运的是,我仅将其用于开发,因为我将这个项目托管在PythonAnywhere上。
范围vs.范围

0

步骤1:从此处安装Visual C ++ 2010 Express 。

(请勿安装Microsoft Visual Studio 2010 Service Pack 1)

步骤2:从“控制面板\程序和功能”中删除所有Microsoft Visual C ++ 2010可再发行程序包。如果您不这样做,则安装将失败,并显示模糊的“安装过程中出现致命错误”错误。

步骤3:从此处安装用于Visual Studio 2010(v7.1)的Windows SDK的脱机版本。这是64位扩展所必需的。Windows内置了对Pismo等ISO的安装。

步骤4:您需要使用Pismo File Mount Audit Package安装ISO文件。从这里下载Pismo

步骤5:右键单击下载的ISO文件,然后选择Pismo挂载。之后,安装Setup \ SDKSetup.exe而不是setup.exe。

步骤6a:通过将目录更改为C:\ Program Files(x86)\ Microsoft Visual Studio版本\ VC \在C:\ Program Files(x86)\ Microsoft Visual Studio 10.0 \ VC \ bin \ amd64中创建vcvars64.bat文件命令提示符。在命令提示符下键入命令: cd C:\Program Files (x86)\Microsoft Visual Studio version\VC\r

步骤6b:要为针对x86平台的64位命令行构建配置此“命令提示符”窗口,请在命令提示符下输入: vcvarsall x86单击此处以获取更多选项。

步骤7:在命令提示符下,输入以下命令安装PyCrypto: C:\Python3X>pip install -U your_wh_file


0

我有python的Pycharm。

  1. pycharm -> file -> setting -> project interpreter

  2. 点击 +

  3. 搜索"pycrypto"并安装软件包

注意:如果尚未安装“适用于Python 2.7的Microsoft Visual C ++编译器”,则它将提示安装,一旦安装完成,请尝试上述步骤,即可正常工作。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.