Amazon Beanstalk上的M2Crypto安装失败

时间:2015-02-12 20:18:17

标签: python elastic-beanstalk m2crypto

我正在尝试通过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”

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

2 个答案:

答案 0 :(得分:0)

我找到了一个安装在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会导致失败。因此,我不会将此标记为已接受的答案,但是评论太过分了。

答案 1 :(得分:0)

以下配置文件(放在.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会在运行容器命令之前尝试安装所有依赖项。