【问题标题】:How to Install M2crypto on Windows如何在 Windows 上安装 M2crypto
【发布时间】:2014-08-04 01:46:48
【问题描述】:

installing OpenSSL 之后,下载pre-built Swig executable,并确保openssl libraries are located in the default c:\pkgpip install m2crypto 结果:

...
C:\Program Files (x86)\gfortran\bin\gcc.exe -mno-cygwin -mdll -O -Wall -IC:\Pyth
on27\include -IC:\Python27\PC -Ic:\pkg\include -Ic:\users\evbo\appdata\local\tem
p\pip_build_evbo\m2crypto\SWIG -c SWIG/_m2crypto_wrap.c -o build\temp.win32-2.7\
Release\swig\_m2crypto_wrap.o -DTHREADING

gcc: error: unrecognized command line option '-mno-cygwin'

error: command 'gcc' failed with exit status 1

binary installer solution for M2crypto 似乎不再可用,我没有看到基于 M2crypto install doc 犯的任何错误。

我该如何解决这个安装问题?是否依赖于旧版本的 GCC?

【问题讨论】:

  • “是否有任何关于如何安装 M2crypto 的简洁说明?” - 这可能会解决问题。你必须找到自己的异地资源。
  • @jww 谢谢,我澄清了我的答案,特别关注我遇到的安装问题
  • 您可以尝试设置路径。打开命令提示符,然后打开set PATH=c:\pkg\include\openssl;%PATH%。 Windows 也使用INCLUDE,因此您也可以使用set INCLUDE=c:\pkg\include\openssl。假设标题位于c:\pkg\include\openssl\include\openssl\opensslv.h。注意:我曾经在使用双 include\openssl 时遇到过问题。所以你可以把目录改成c:\pkg\include\openssl-xxx
  • 目前我发现的最好的是本教程 -gooli.org/blog/building-m2crypto-on-windows 虽然据说 Project Chandler 网站 (chandlerproject.org/bin/view/Projects/MeTooCrypto) 上有一个 Windows 版本,但它现在已经关闭了。
  • @jww 谢谢,但实际上 openssl 期望库位于硬编码位置,除非您自己构建它(默认为 c:\pkg),是的 @MikeDriscoll,我也更喜欢安装程序.. . 当它重新上线时!

标签: python windows openssl swig m2crypto


【解决方案1】:

【讨论】:

  • 如果不是很明显,你必须点击“Raw”来下载实际的安装程序。
  • 我遇到了同样的问题,但安装那个 .msi 并没有解决它
  • @Frederic 我遇到的问题涉及安装 M2Crypto,.msi 在确保成功方面非常强大。也就是说,运行完.msi文件就不需要再运行pip install m2crypto了。
  • 非常好的发现。它使离线安装变得容易。感谢您的发布。我想知道审查此 msi 安装的二进制文件的最佳方法是什么?
【解决方案2】:

https://gitlab.com/m2crypto/m2crypto 项目提供 Windows 版本的 M2Crypto。

您可以在https://ci.appveyor.com/project/m2crypto/m2crypto 的 AppVeyor 构建中找到当前 Python 版本的轮子。

例如,从https://ci.appveyor.com/project/m2crypto/m2crypto 安装 M2Crypto 0.37.1 → https://ci.appveyor.com/project/m2crypto/m2crypto/builds/37187357/job/5c56adinoe9l8kng/artifactspip 对于 64 位 Python 3.8,运行:

pip install \
  https://ci.appveyor.com/api/buildjobs/5c56adinoe9l8kng/artifacts/dist/M2Crypto-0.37.1-cp38-cp38-win_amd64.whl

注意! AppVeyor 中的工件可能会过期,请参阅this bug 了解更新。

【讨论】:

    【解决方案3】:

    此答案基于https://github.com/iOSForensics/pymobiledevice/issues/25#issuecomment-576119104 的 GitHub 评论,用于需要 m2crypto 的 Python 模块。

    针对特定 Python 版本的 m2crypto 的一些构建可从其 CI 获得:https://ci.appveyor.com/project/m2crypto/m2crypto/history。尝试选择一个版本,选择一个与您的 Python 版本匹配的作业,然后转到“工件”选项卡并下载安装程序。要安装 .whl 文件,请参阅下面我的构建教程的第 11 步。

    M2Crypto-0.35.2.win-amd64-py3.8.zip 是我在 Windows 10 x64、Python 3.8.1 上构建的 m2crypto 模块。它应该适用于任何基于 x64 的 Windows 版本和任何版本的 Python 3.8.X。

    但是,如果您无法找到与您的 Python 版本和系统类型和架构相匹配的构建,您可能需要手动构建 m2crypto。我从他们的 CI 构建脚本中调整了构建步骤:https://gitlab.com/m2crypto/m2crypto/blob/master/appveyor.yml。我通过执行以下操作构建了模块:

    1. 安装最新的Build Tools for Visual Studio 2019。请参阅“所有下载”->“Visual Studio 2019 工具”下的 https://visualstudio.microsoft.com/downloads/。在撰写本文时,此直接链接处于活动状态:https://visualstudio.microsoft.com/thank-you-downloading-visual-studio/?sku=BuildTools&rel=16
    2. 在安装程序中,选择“C++ Build Tools”,安装,必要时重启。
    3. 为您的架构 (Win64/Win32) 安装最新的完整版本(不是 LightOpenSSL。撰写本文时的当前版本是1.1.1d。记下您安装OpenSSL 的目录。 https://slproweb.com/products/Win32OpenSSL.html
    4. PowerShell 中,安装Chocolatey 包管理器。我在他们的网站上使用了这个命令:Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
    5. 安装swigChocolatey(在PowerShell 中)。 choco install -r -y swig
    6. 安装pywin32 依赖项。运行pip install pywin32。如果您有问题,请先尝试运行pip install wheel。要让 pip 以特定 Python 安装为目标,请尝试使用 py -[version] -m pip install [module] 启动它。注意:您可能需要使用提升的(管理员)PowerShell 来安装 Python 模块。
    7. 获取最新的m2crypto 代码。如果您安装了git,请运行git clone https://gitlab.com/m2crypto/m2crypto。否则,从 GitLab 下载并提取代码:https://gitlab.com/m2crypto/m2crypto/-/archive/master/m2crypto-master.zip
    8. 使用cd 切换到m2crypto 被克隆/提取到的目录。
    9. 假设python 启动您想要的Python 解释器版本,运行python setup.py build --openssl="C:\Program Files\OpenSSL-Win64" --bundledlls,将C:\Program Files\OpenSSL-Win64 替换为您安装OpenSSL 的目录。 (在某些系统上,您可以使用 py 启动器指定要使用的 Python 版本,运行 py -h 了解更多信息。)
    10. 生成可安装文件。 python.exe setup.py bdist_wheel bdist_wininst bdist_msi.
    11. 安装模块。 cd 进入dist 目录并运行pip install M2Crypto-0.35.2-cp38-cp38-win_amd64.whl,将文件名替换为生成的.whl 文件。如果您有问题,请先尝试运行pip install wheel。要让 pip 以特定 Python 安装为目标,请尝试使用 py -[version] -m pip install [module] 启动它。或者,您可以运行生成的 .exe.msi 安装程序。注意:您可能需要使用提升的(管理员)PowerShell 来安装 Python 模块。

    【讨论】:

    【解决方案4】:

    现在是 2019 年末,安装 M2Crypto 仍然很痛苦!经过大量的谷歌搜索,终于把它归结为以下步骤:

    pip install wheel
    pip install M2CryptoWin32
    

    在 Windows 10 上使用全新的 Python 2.7.17 32 位安装。您可能需要先安装 http://aka.ms/vcpython27

    如果您安装了 64 位 Python,我想应该使用 M2CryptoWin64。

    【讨论】:

    • M2CryptoWin32 和 M2CryptoWin64 自 2014 年以来没有更新,这将使它们不适合大多数人。当我在 Python 3.7 上尝试 M2CryptoWin64 时,结果是 ModuleNotFoundError: No module named '__m2crypto'。尽管如此,回购github.com/dsoprea/M2CryptoWin32github.com/dsoprea/M2CryptoWin64 对某人来说可能是一个有用的起点。
    【解决方案5】:

    1~11:https://stackoverflow.com/a/59817750

    12:在一个命令中安装 M2Crypto.whl 和 adb

    pip install M2Crypto-0.38.0-cp310-cp310-win_amd64.whl adb

    【讨论】:

    • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-13
    • 1970-01-01
    相关资源
    最近更新 更多