我正在尝试通过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”
但错误仍然存在。有什么想法吗?
答案 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会在运行容器命令之前尝试安装所有依赖项。