Linux / Python · 4 12 月, 2022 0

CentOS用pip3安装gevent报gcc错误

(好家伙这标题一串名词……)

事件背景

系统环境

  • CentOS 7.2
  • Python 3.6

笔者在VPS上安装某Python3编写的Web应用,执行时报错缺少模块“gevent”。于是一如既往地执行pip3 install gevent,结果安装到最后提示“gcc error”、“找不到Python.h”之类的东西。

解决经过

  1. 安装依赖
yum install libevent-devel
yum install python36-devel

网上搜到的解决方法大多是这个。安装依赖后确实“Python.h”不再报错,但gcc依然会报别的错误。

  1. 升级PyPI
python3 -m pip install --upgrade pip

找了一圈才发现,VPS提供的CentOS中PyPI版本过低也会导致gevent安装失败。因此升级PyPI也是必要的。

  1. 安装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

所以如果报错的话还是安装最新版比较靠谱。