(好家伙这标题一串名词……)
事件背景
系统环境
- CentOS 7.2
- Python 3.6
笔者在VPS上安装某Python3编写的Web应用,执行时报错缺少模块“gevent”。于是一如既往地执行pip3 install gevent
,结果安装到最后提示“gcc error”、“找不到Python.h”之类的东西。
解决经过
- 安装依赖
yum install libevent-devel
yum install python36-devel
网上搜到的解决方法大多是这个。安装依赖后确实“Python.h”不再报错,但gcc依然会报别的错误。
- 升级PyPI
python3 -m pip install --upgrade pip
找了一圈才发现,VPS提供的CentOS中PyPI版本过低也会导致gevent安装失败。因此升级PyPI也是必要的。
- 安装gevent
按说这个没啥可讲的,直接pip3 install gevent
应该就能安装成功了。但偏偏有的教程告诉你要指定安装版本,不能安装最新版。也就是用下面这条命令安装:
pip3 install gevent==1.4.0
在这里咱只能说,按需吧。笔者的应用就那么直接安装最新版后跑起来啥事没有,用了1.4后反而报了以下error:
ValueError: greenlet.greenlet size changed, may indicate binary incompatibility. Expected 128 from C header, got 40 from PyObject
所以如果报错的话还是安装最新版比较靠谱。