如何在 Windows 上安装 PyCrypto?

Posted

技术标签:

【中文标题】如何在 Windows 上安装 PyCrypto?【英文标题】:How do I install PyCrypto on Windows? 【发布时间】:2012-07-09 11:18:28 【问题描述】:

我已经阅读了所有其他谷歌源代码和 SO 线程,但没有任何工作。

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

所以我安装了 MinGW 并将其添加到安装行中作为选择的编译器。但后来我收到错误"RuntimeError: chmod error".

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

有什么想法吗?

【问题讨论】:

error: Unable to find vcvarsall.bat 的可能重复项 这是一个非常大胆的建议,从海外未知服务器安装二进制加密包...... PyCrypto 已死。作者已经放弃了一段时间。 github.com/dlitz/pycrypto/issues/173 更重要的是,它有一个可利用的缓冲区溢出pony7.fr/ctf:public:32c3:cryptmsg 目前 voidspace 正在公开一个无效的证书,还有其他 Windows 的可信任二进制文件来源吗? 【参考方案1】:

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

【讨论】:

【参考方案2】:

一般

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

您必须使用与编译 Python 版本相同的编译器来编译 PyCrypto。 Google for “无法找到 vcvarsall.bat” 因为这是您问题的根源,it is a very common problem with compiling Python extensions on Windows.

There is a lot of information and a lot to read to get this right on whatever system you are on with this link.

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

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

这样做时要小心。来自 python.org 的 Python 2.6 和 2.7 是 使用 Visual Studio 2008 编译器构建。您将需要与 与 Python 相同的 CRT (msvcr90.dll)。

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

如果您这样做,您还必须使用 Visual Studio 2010 重新构建 Python 表示。您不能将标准 Python 二进制安装程序用于 视窗。你也不能使用任何用不同的 C/C++ 扩展 编译器高于 Visual Studio 2010 (Express)。

意见:这就是我放弃 Windows 来为 OSX 进行所有严肃开发工作的原因之一!

【讨论】:

感谢您的洞察力。但是,天哪,真的要这么乏味吗(沮丧是针对蟒蛇神,而不是你自己)?我只是尝试通过 setup.py 和 pip 安装另一个包(mcrypt),两者都因错误退出。 Windows 用户到底是如何安装软件包的?他们都必须下载VS 2008 Express吗? (我有 VS 2010,我猜它不能胜任)。 不,它没有;在 OSX 或 Linux 上不是这样的。在 Windows 中,可以为默认 Python 发行版安装预编译的二进制文件如果你能找到它们,由于愚蠢的导出限制,密码学的东西通常不可用> 在美国。但是您真的要安装不是您自己从源代码编译的加密库吗????这有多安全,我的意思是你怎么知道他们没有以某种方式受到损害? “意见:这就是我放弃 Windows 来为 OSX 进行所有严肃开发工作的原因之一!”是的......我在我的设备上安装任何类型的 C 编译器之前下载了 python......然后我让 Visual Studio 2013 用 Visual Basic 做一些事情......然后我得到了 MinGW,这样我就可以使用GCC 在 windows 上编译 C。简而言之,虽然其中一些可能是我的错,但我不知道 python 会尝试使用什么开发环境。幸运的是,在线二进制文件中提供了大量 python 包,包括 pycrypto。【参考方案3】:

如果您尚未安装与 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

请注意从this list选择相关链接进行设置

如果您正在寻找 Python 3.5 的构建版本,请参阅 PyCrypto on python 3.5

【讨论】:

您可以使用 easy_install 从 url 安装二进制文件:easy_install http://www.voidspace.org.uk/downloads/pycrypto26/pycrypto-2.6.win32-py2.7.exe voidspace.org.uk/python/modules.shtml#pycrypto 的安装程序为我工作。提示:如果您无意中运行了 64 位安装程序,但使用的是 32 位版本的 Python 2.7,则安装程序将失败并显示警告“需要 Python 版本 2.7,在注册表中找不到。” gui 安装程序对我来说失败了。 easy_install 成功 @Udi 为什么需要easy_install 来安装exe? @SmitJohnth easy_install 将在 virtualenv 中安装包(如果你有的话),并且会禁止所有图形交互(自动化或只是节省时间)。【参考方案4】:

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

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

在 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。

我希望这会有所帮助。

【讨论】:

【参考方案5】:

对于 VS2010:

SET VS90COMNTOOLS=%VS100COMNTOOLS%

对于 VS2012:

SET VS90COMNTOOLS=%VS110COMNTOOLS%

然后调用:

pip install pyCrypto 

【讨论】:

对于 VS2013:SET VS90COMNTOOLS=%VS120COMNTOOLS% 虽然这在某些情况下可能有效,但这不是一个解决方案。您需要确保使用与编译 Python 相同的编译器编译任何依赖项! VS2017怎么样?!我应该设置什么?! @mahshid.r 您可以检查 VSxxxCOMNTOOLS 的环境变量并获取变量名,然后将 VS90COMNTOOLS 变量设置为 VSxxxCOMNTOOLS 值。在 CMD 中: 1. "SET VS90COMNTOOLS=%VS140COMNTOOLS%" 2. pip install pyCrypto【参考方案6】:

我已经设法让pycrypto 使用MinGW32MSYS 进行编译。这假定您已安装 pipeasy_install

我是这样做的:

1) 安装MinGW32。为了便于解释,我们假设它安装在C:\MinGW 中。使用我推荐的安装程序时,选择 C++ 编译器. MSYS 应该安装 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%。如果您不熟悉,this article 非常有帮助。

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

4) 在 MSYS 终端 pip install pycrypto 之后应该可以正常运行。

【讨论】:

您的解决方案似乎缺少一些步骤。您可能需要详细说明此解决方案。【参考方案7】:

所以我安装了 MinGW 并将其作为编译器添加到安装行 选择。但后来我收到错误“RuntimeError: chmod error”。

出现此错误"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`

【讨论】:

【参考方案8】:

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

【讨论】:

哇,真有趣。但仍然是 84 Mb。有点太晚了,看看我关于***的回答。 即使使用***,当您想从源代码构建某些东西或使用不支持的模块时,这也是比将头撞到 VS 2008 和 vcvarsall.bat 更好的选择有一个***。用于 Python 的 MSVC 可能不会在“长期”内出现,但它现在非常有用。 仍然是我找到的最简单的解决方案;我一直讨厌不得不依赖随机(对我而言)网站的预构建二进制文件。【参考方案9】:

多年后,python 终于同意了一个名为 wheel 的二进制分发,它允许在 Windows 上安装二进制扩展,而无需使用简单的 pip install packagename 编译器。他们的状态有一个list of popular packages。 Pycrypto 还没有,但例如 lxml、PySide 和 Scrapy。

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

【讨论】:

【参考方案10】:

对于 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"。安装它,再次运行命令,这次它工作了。【参考方案11】:

所以我安装了 MinGW 并将其添加到安装行中作为选择的编译器。但后来我收到错误“RuntimeError: chmod error”。

MinGW下需要安装msys包

并在您的 PATH 环境变量中添加以下条目。

C:\MinGW\bin C:\MinGW\msys\1.0\bin [这里可以找到 chmod 可执行文件]

然后从普通的 Windows 命令提示符运行您的命令。

【讨论】:

【参考方案12】:

对于那些正在寻找 python 3.4 的人,我找到了一个 git repo,它带有一个可以正常工作的安装程序。这是x64 和x32 的直接链接

【讨论】:

【参考方案13】:

PyCryptodome 是 PyCrypto 的一个几乎兼容的分支,在 pypi 上提供 Windows ***。

你可以用一个简单的方式安装它:

pip install pycryptodome

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

【讨论】:

【参考方案14】:

    转到"Microsoft Visual C++ Compiler for Python 2.7" 并根据“系统要求”继续(这是我将以下步骤放在一起所做的)。

    安装 setuptools(Python 需要 setuptools 6.0 或更高版本才能自动检测此编译器包) 通过: pip install setuptools 下载“Setuptools bootstrapping installer”源代码from,将此文件保存在文件系统中的某个位置为“ez_python.py”,然后安装:python ez_python.py

    安装wheel(推荐使用wheel 来生成预构建的二进制包)。您可以通过以下方式安装它:pip install wheel

    打开 Windows 提升的命令提示符 cmd.exe(带有“以管理员身份运行”)为所有用户安装“Microsoft Visual C++ Compiler for Python 2.7”。您可以使用以下命令执行此操作: msiexec /i C:\users\jozko\download\VCForPython27.msi ALLUSERS=1 只需使用您自己的文件路径:msiexec /i &lt;path to MSI&gt; ALLUSERS=1

    现在您应该可以安装 pycrypto 了:pip install pycrypto

【讨论】:

【参考方案15】:

尝试使用:

pip install pycryptodome

或:

pip install pycryptodomex

来源:https://pypi.python.org/pypi/pycryptodome

【讨论】:

【参考方案16】:

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

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

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

Crypto.Cipher 导入 AES

【讨论】:

【参考方案17】:

第 1 步:从以下位置安装 Visual C++ 2010 Express here。

(不要安装 Microsoft Visual Studio 2010 Service Pack 1)

第 2 步:从控制面板\程序和功能中删除所有 Microsoft Visual C++ 2010 Redistributable 软件包。如果您不这样做,那么安装将失败并出现一个模糊的“安装期间出现致命错误”错误。

第 3 步:从here 安装 Windows SDK for Visual Studio 2010 (v7.1) 的离线版本。 这是 64 位扩展所必需的。 Windows 为 Pismo 等 ISO 提供了内置安装。

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

第 5 步:右键单击下载的 ISO 文件并选择使用 Pismo 安装。此后,安装 Setup\SDKSetup.exe 而不是 setup.exe。

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

步骤 6b: 要为针对 x86 平台的 64 位命令行构建配置此命令提示符窗口,请在命令提示符处输入: vcvarsall x86点击here查看更多选项。

第 7 步:在命令提示符下,键入以下命令安装 PyCrypto: C:\Python3X&gt;pip install -U your_wh_file

【讨论】:

【参考方案18】:

我有 Python 的 Pycharm。

    转到pycharm -&gt; file -&gt; setting -&gt; project interpreter

    点击+

    搜索"pycrypto"并安装包

注意:如果您没有安装“Microsoft Visual C++ Compiler for Python 2.7”,它会提示安装,安装完成后尝试上述步骤应该可以正常工作。

【讨论】:

【参考方案19】:

如果您在 Windows 上并且在安装 Pycrypcto 时遇到困难,请使用: 点安装 pycryptodome。 它就像一个奇迹,它会让您的生活比尝试进行大量配置和调整要容易得多。

【讨论】:

以上是关于如何在 Windows 上安装 PyCrypto?的主要内容,如果未能解决你的问题,请参考以下文章

Windows7 Python-3.6 安装PyCrypto(pycrypto 2.6.1)出现错误以及解决方法

Microsoft Windows Python-3.6 PyCrypto 安装错误

Windows安装pycrypto失败记录

windows环境下python3安装Crypto

windows环境下python3安装Crypto

windows下python安装paramiko模块和pycrypto模块(简单三步)