在Windows上通过pipbuild立与fastmath(gmp或mpir)的PyCrypto

我通过pipWindows上安装了PyCrypto,但是我无法构buildCrypto.PublicKey._fastmath,因为没有findGMP。

我知道在void空间有一个二进制版本,但我想构build最新版本的PyCrypto

以下是实现您的目标的一种方法。 还有其他的,可能更好的方法(例如基于Visual Studio),但是这个为我工作。 另外,它不使用pip

所有操作都在命令提示符下执行。

  1. 安装Mingw ,包括MSYS和开发工具包。 这会给你一个相当完整的类Unix开发环境。
  2. 确保Mingw二进制文件在PATH环境变量中。 您需要MinGW\binMingGW\msys\1.0\bin
  3. 在临时目录中下载MPIR源代码。 不要使用2.5.1是很重要的,因为一个会破坏构建的bug。 2.5.0很好。
  4. 建立MPIR库。 这很简单:执行bash configure然后make
  5. HACK#1libmpir.ampir-2.5.0\.libs复制到C:\Python2.7.1\libs 。 这是必要的,因为distutils已经坏了,我找不到一个方法将其引导到正确的库位置。
  6. HACK#2编辑C:\Python2.7.1\Lib\distutils\cygwincompiler.py并删除字符串-mno-cygwin 。 原因在这里解释。
  7. 下载PyCrypto来源并将它们解压到另一个临时目录中。
  8. CPPFLAGS环境变量设置为mpir.h目录,其中包含mpir.h
  9. HACK 3编辑setup.py并在build_extension方法中添加以下行:

    自.__ add_compiler_option(os.environ [ 'CPPFLAGS'])

  10. 运行bash configure 。 你应该看到两行说:

    在-lgmp中检查__gmpz_init …不
    在-lmpir中检查__gmpz_init …是的

  11. 执行python setup.py build -c mingw32 。 你应该看到没有错误。
  12. 执行python setup.py test来验证一切正常。
  13. 执行python setup.py install将文件复制到本地的Python库中。
  14. 或者,运行python setup.py bdist_wininst来创建一个安装程序。

我真的很讨厌所有的黑客,我很想听听他们是否可以避免。