6

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

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

4

1 回答 1

5

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

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

  1. 安装Mingw,包括 MSYS 和开发工具包。这将为您提供一个相当完整的类 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 #1libmpir.a从复制mpir-2.5.0\.libsC:\Python2.7.1\libs. 这是必要的,因为distutils它已损坏,我找不到将其定向到正确库位置的方法。
  6. HACK #2编辑C:\Python2.7.1\Lib\distutils\cygwincompiler.py并删除任何出现的字符串-mno-cygwin。原因在这里解释。
  7. 下载PyCrypto源并将它们解压缩到另一个临时目录中。
  8. CPPFLAGS环境变量设置为 MPIR 目录,其中包含mpir.h.
  9. HACK 3编辑setup.py并在方法中添加以下行build_extension

    self.__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以创建安装程序。

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

于 2012-06-07T21:50:37.053 回答