本文介绍在Linux系统的ECS实例中安装阿里云SDK失败的解决方案。
说明
关于阿里云SDK更多信息,请参见SDK概述。
问题现象
在Linux系统的ECS实例中,安装阿里云CLI工具成功后,使用pip install aliyun-python-sdk-slb
命令安装阿里云SDK失败,报错信息类似如下所示。
pip install aliyun-python-sdk-slb
src/hash_template.c:356: warning: implicit declaration of function ‘PyModule_GetDict’
src/hash_template.c:356: warning: implicit declaration of function ‘Py_DECREF’
src/hash_template.c:360: warning: implicit declaration of function ‘PyErr_Occurred’
src/hash_template.c:361: warning: implicit declaration of function ‘Py_FatalError’
error: command 'gcc' failed with exit status 1
----------------------------------------
Command "/usr/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-RtPfzh/pycrypto/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-sON4x0-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-build-RtPfzh/pycrypto/
问题原因
可能是由于Linux系统的ECS实例中部分Python文件缺失,导致安装阿里云SDK失败。
解决方案
请参考以下操作排查Python文件缺失情况并修复。
远程连接ECS实例。
具体操作,请参见连接方式概述。
执行如下命令,检查安装的python包。
rpm -qa|grep python
系统返回类似如下,发现缺少
python-devel
包。python-libs-2.6.6-52.el6.x86_64 libproxy-python-0.3.0-4.el6_3.x86_64 newt-python-0.52.11-3.el6.x86_64 python-ethtool-0.6-5.el6.x86_64 python-urlgrabber-3.9.1-9.el6.noarch python-iniparse-0.3.1-2.1.el6.noarch abrt-addon-python-2.0.8-21.el6.centos.x86_64 python-setuptools-0.6.10-3.el6.noarch python-iwlib-0.1-1.2.el6.x86_64 python-argparse-1.2.1-2.1.el6.noarch python-pycurl-7.19.0-8.el6.x86_64 python-2.6.6-52.el6.x86_64 libxml2-python-2.7.6-21.el6_8.1.x86_64 dbus-python-0.83.0-6.1.el6.x86_64 libreport-python-2.0.9-19.el6.centos.x86_64 python-pip-7.1.0-1.el6.noarch rpm-python-4.8.0-37.el6.x86_64
执行如下命令,安装
python-devel
包。说明CentOS 6与CentOS 8操作系统版本结束了生命周期(EOL),按照社区规则,CentOS 6/8的源地址内容已移除。当您在CentOS 6/8系统内继续使用默认配置的源地址时会发生报错。建议您先切换CentOS 6/8的源地址,然后再进行操作。具体操作,请参见 CentOS 6 EOL如何切换源?和 CentOS 8 EOL如何切换源?。
yum install python-devel
重新执行以下命令安装阿里云SDK,若不再提示以上报错信息,则表示问题已修复。
pip install aliyun-python-sdk-slb