如何在 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
使用MinGW32
和MSYS
进行编译。这假定您已安装 pip
或 easy_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 <path to MSI> 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>pip install -U your_wh_file
【讨论】:
【参考方案18】:我有 Python 的 Pycharm。
转到pycharm -> file -> setting -> 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)出现错误以及解决方法