【问题标题】:How do I install PyCrypto on Windows?如何在 Windows 上安装 PyCrypto?
【发布时间】: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 二进制文件并安装了它,但在系统上找不到它(不工作)。

有什么想法吗?

【问题讨论】:

标签: python windows python-2.7 pycrypto


【解决方案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,它带有一个可以正常工作的安装程序。这是x64x32 的直接链接

            【讨论】:

              【解决方案13】:

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

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

              pip install pycryptodome
              

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

              【讨论】:

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

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

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

                4. 打开 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

                5. 现在您应该可以安装 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。

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

                        2. 点击+

                        3. 搜索"pycrypto"并安装包

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

                        【讨论】:

                          【解决方案19】:

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

                          【讨论】:

                            猜你喜欢
                            • 2013-09-04
                            • 2012-11-27
                            • 1970-01-01
                            • 2010-12-13
                            • 2020-11-18
                            • 1970-01-01
                            • 1970-01-01
                            • 2017-06-10
                            • 1970-01-01
                            相关资源
                            最近更新 更多