【问题标题】:M2Crypto installation fails on Amazon BeanstalkAmazon Beanstalk 上的 M2Crypto 安装失败
【发布时间】:2025-12-09 10:40:01
【问题描述】:

我正在尝试通过 requirements.txt 安装 python 包“M2Crypto”,我收到以下错误消息:

/usr/include/openssl/opensslconf.h:36: 错误:CPP #error ""此 openssl-devel 包不适用于您的架构?""。使用 -cpperraswarn 选项继续 swig 处理。

错误:命令“swig”失败,退出状态为 1

我尝试过

option_name:SWIG_FEATURES 值:“-cpperraswarn -includeall -I/usr/include/openssl”

但错误仍然存​​在。有什么想法吗?

【问题讨论】:

  • 或许这个问题对你有帮助*.com/questions/7772965/…
  • @Elizion 谢谢,我不知道如何让./fedora_setup.sh build./fedora_setup.sh install 在Beanstalk 实例上工作。如果我能知道 virtualenv 的绝对路径在哪里,也许我可以试试。

标签: python amazon-elastic-beanstalk m2crypto


【解决方案1】:

以下配置文件(位于.ebextensions)对我有用:

packages:
    yum:
        swig: []

container_commands:
    01_m2crypto:
        command: 'SWIG_FEATURES="-cpperraswarn -includeall -D`uname -m` -I/usr/include/openssl" pip install M2Crypto==0.21.1'

确保您不要在您的 requirements.txt 中指定 M2Crypto,但 Elastic Beanstalk 将在运行容器命令之前尝试安装所有依赖项。

【讨论】:

  • 我真的没有办法测试它,但如果其他人同意,我可以接受答案。
【解决方案2】:

我找到了一个在 Beanstalk 上安装 M2Crypto 的解决方案,但它有点小技巧,你有责任确保它适用于生产环境。我从我的项目中删除了 M2Crypto,因为这个问题很荒谬,如果可以的话,试试 pycrypto。

Based on(我只加了python setup.py test):

#!/bin/bash
python -c "import M2Crypto" 2> /dev/null
if [ "$?" == 1 ]
then
    cd /tmp/ 
    pip install -d . --use-mirrors M2Crypto==0.21.1
    tar xvfz M2Crypto-0.21.1.tar.gz
    cd M2Crypto-0.21.1
    ./fedora_setup.sh build
    ./fedora_setup.sh install
    python setup.py test
fi`

在环境配置文件中

commands:
    m2crypto:
        command: scripts/m2crypto.sh
        ignoreErrors: True
        test: echo '! python -c "import M2Crypto"' | bash

ignoreErrors 不是一个好主意,但我只是用它来测试软件包是否真的被安装并且看起来像它。

同样,这似乎可以安装软件包,但我不确定,因为删除 ignoreErrors 会导致失败。因此,我不会将此标记为已接受的答案,但评论太多了。

【讨论】: