通过Windows上的pip使用fastmath(gmp或mpir)构建PyCrypto

时间:2012-06-07 19:06:31

标签: python windows pip pycrypto

我通过pip在Windows上安装了PyCrypto,但由于找不到GMP,我无法构建Crypto.PublicKey._fastmath。

我知道voidspace上有二进制版本,但我想构建最新版本的PyCrypto

1 个答案:

答案 0 :(得分:5)

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

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

  1. 安装Mingw,包括MSYS和Development Toolkit。这将为您提供一个相当完整的类Unix开发环境。
  2. 确保Mingw二进制文件位于PATH环境变量中。您需要MinGW\binMingGW\msys\1.0\bin
  3. 在临时目录中下载MPIR个来源。由于存在破坏构建的错误,因此使用2.5.1非常重要。 2.5.0很好。
  4. 构建MPIR库。这非常简单:执行bash configure后跟make
  5. HACK#1 libmpir.a的{​​{1}}复制到mpir-2.5.0\.libs。这是必要的,因为C:\Python2.7.1\libs已被破坏,我无法找到将其指向正确库位置的方法。
  6. HACK#2 修改distutils并删除字符串C:\Python2.7.1\Lib\distutils\cygwincompiler.py的所有问题。原因解释为here
  7. 下载PyCrypto来源并将其解压缩到另一个临时目录中。
  8. -mno-cygwin环境变量设置为MPIR目录,其中包含CPPFLAGS
  9. HACK 3 修改mpir.h并在setup.py方法中添加以下行:

      

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

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

      

    在-lgmp中检查__gmpz_init ...没有   检查-lmpir中的__gmpz_init ...是

  11. 执行bash configure。你应该看到没有错误。
  12. 执行python setup.py build -c mingw32以确认一切正常。
  13. 执行python setup.py test将文件复制到本地Python存储库中。
  14. 或者,运行python setup.py install以创建安装程序。
  15. 我真的很讨厌各种各样的黑客行为,我很想听听他们是否可以避免。