151

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

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

因此,我安装了 MinGW 并将其作为首选编译器添加到安装行。但后来我得到了错误"RuntimeError: chmod error".

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

有任何想法吗?

4

19 回答 19

191

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

于 2012-07-10T02:19:54.200 回答
33

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

于 2014-12-06T01:22:05.193 回答
33

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

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

于 2014-12-07T05:21:07.950 回答
20

对于 VS2010:

SET VS90COMNTOOLS=%VS100COMNTOOLS%

对于 VS2012:

SET VS90COMNTOOLS=%VS110COMNTOOLS%

然后调用:

pip install pyCrypto 
于 2013-06-06T07:09:41.673 回答
19

一般来说

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

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

要在使用此链接的任何系统上正确执行此操作,需要阅读大量信息和大量信息。

注意使用 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 Express 重新构建 Python。您不能使用适用于 Windows 的标准 Python 二进制安装程序。您也不能使用使用与 Visual Studio 2010 (Express) 不同的编译器构建的任何 C/C++ 扩展。

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

于 2012-07-10T01:54:32.980 回答
18

PyCryptodome是一个几乎兼容的 PyCrypto 分支,在pypi上有 Windows 轮子。

您可以通过简单的方式安装它:

pip install pycryptodome

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

于 2015-09-20T07:25:00.963 回答
6

我已经设法pycrypto通过使用MinGW32and进行编译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) 在此之后,从 MSYS 终端中pip install pycrypto应该可以正常运行。

于 2014-01-22T19:17:33.003 回答
5

对于 Windows 7:

要在 Windows 中安装 Pycrypto,

在命令提示符中试试这个,

设置path=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 安装

它对我有用。希望对所有人都有效..

于 2015-04-12T09:46:35.743 回答
5

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

于 2015-07-13T14:50:39.620 回答
5

尝试使用:

pip install pycryptodome

或者:

pip install pycryptodomex

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

于 2017-01-04T16:22:09.547 回答
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。

我希望这有帮助。

于 2012-07-10T07:21:24.797 回答
4

如果您在 Windows 上安装 Pycrypcto,只需使用:pip install pycryptodome。它就像一个奇迹,它会让你的生活比尝试进行大量配置和调整要容易得多。

于 2019-05-22T08:30:05.620 回答
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`
于 2014-09-24T10:11:08.307 回答
3
  1. 转到Microsoft Visual C++ Compiler for Python 2.7并根据“系统要求”继续(这是我将以下步骤放在一起的操作)。

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

  3. 安装轮子(建议使用轮子来生成预构建的二进制包)。您可以使用以下方式安装它:pip install wheel

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

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

于 2016-07-30T22:02:36.623 回答
3

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

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

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

Crypto.Cipher导入 AES

于 2017-08-18T17:01:19.033 回答
2

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

于 2012-07-10T01:51:15.770 回答
1

因此,我安装了 MinGW 并将其作为首选编译器添加到安装行。但后来我收到错误“RuntimeError:chmod 错误”。

需要在MinGW下安装msys包

在此处输入图像描述

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

  • C:\MinGW\bin
  • C:\MinGW\msys\1.0\bin[这是你可以找到 chmod 可执行文件的地方]

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

于 2015-04-26T17:47:00.263 回答
0

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

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

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

第 3 步:从此处安装 Windows SDK for Visual Studio 2010 (v7.1) 的离线版本。这是 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 10.0\VC\bin\amd64 中创建一个 vcvars64.bat 文件,方法是将目录更改为 C:\Program Files (x86)\Microsoft Visual Studio version\VC\ on命令提示符。在命令提示符下键入命令: 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

于 2018-02-08T04:45:33.783 回答
0

我有 python 的 Pycharm。

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

  2. 点击+

  3. 搜索"pycrypto"并安装包

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

于 2018-07-04T14:32:53.550 回答