You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mac M1环境下安装gevent==21.8.0失败的技术求助

问题描述

在M1芯片设备上,通过pip-sync或直接执行pip install gevent==21.8.0安装指定版本时出现矛盾报错:明明版本列表中显示存在21.8.0,但提示找不到匹配的发行版。报错详情如下:

Collecting gevent==21.8.0
  Using cached gevent-21.8.0.tar.gz (6.2 MB)
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Preparing metadata (pyproject.toml) ... error

ERROR: Could not find a version that satisfies the requirement gevent==21.8.0 (from versions: 0.9.2, 0.9.3, 0.10.0, 0.11.0, 0.11.1, 0.11.2, 0.12.0, 0.12.1, 0.12.2, 0.13.0, 0.13.1, 0.13.2, 0.13.3, 0.13.4, 0.13.5, 0.13.6, 0.13.7, 0.13.8, 1.0, 1.0.1, 1.0.2, 1.1a1, 1.1a2, 1.1b1, 1.1b2, 1.1b3, 1.1b4, 1.1b5, 1.1b6, 1.1rc1, 1.1rc2, 1.1rc3, 1.1rc4, 1.1rc5, 1.1.0, 1.1.1, 1.1.2, 1.2a1, 1.2a2, 1.2.0, 1.2.1, 1.2.2, 1.3a1, 1.3a2, 1.3b1, 1.3b2, 1.3.0, 1.3.1, 1.3.2, 1.3.2.post0, 1.3.3, 1.3.4, 1.3.5, 1.3.6, 1.3.7, 1.4.0, 1.5a1, 1.5a2, 1.5a3, 1.5a4, 1.5.0, 20.4.0, 20.5.0, 20.5.1, 20.5.2, 20.6.0, 20.6.1, 20.6.2, 20.9.0, 20.12.0, 20.12.1, 21.1.0, 21.1.1, 21.1.2, 21.8.0, 21.12.0)
ERROR: No matching distribution found for gevent==21.8.0

已尝试操作:

  • 更换pip/python版本:21.3.1/3.6.15、22.2.2/3.8.13
  • 直接执行pip install gevent==21.8.0而非通过pip-sync
问题原因

核心原因是M1芯片的arm64架构没有预编译的gevent==21.8.0 wheel包:PyPI上虽存在该版本的源码包,但缺少对应arm64的预编译包。pip尝试从源码编译时,因依赖(如libev、cython版本不兼容)编译失败,最终触发“找不到发行版”的矛盾报错。

解决方法

方法1:升级到兼容的gevent版本

gevent从21.12.0开始正式支持M1芯片的arm64架构,若项目依赖允许,直接安装该版本或更高稳定版:

# 安装指定兼容版本
pip install gevent==21.12.0
# 或升级到最新稳定版
pip install gevent --upgrade

方法2:通过Rosetta 2模拟x86_64架构安装

若必须使用gevent==21.8.0,可借助Rosetta 2模拟x86环境:

  1. 右键终端图标,选择“使用Rosetta打开”
  2. 创建x86_64架构的Python虚拟环境(以pyenv为例):
    # 安装x86版本的Python 3.8.13
    pyenv install 3.8.13 --patch < <(curl -s https://github.com/pyenv/pyenv/pull/1900/commits/867d8f0b0ce2c280b37241ca1380d472f08260e0.patch)
    pyenv local 3.8.13
    # 创建并激活虚拟环境
    python -m venv venv_x86
    source venv_x86/bin/activate
    
  3. 在该虚拟环境中执行安装命令:
    pip install gevent==21.8.0
    

方法3:手动从源码编译安装

若以上方法不适用,尝试手动编译:

  1. 安装编译依赖:
    brew install libev cython
    
  2. 设置编译环境变量:
    export CFLAGS="-I$(brew --prefix libev)/include"
    export LDFLAGS="-L$(brew --prefix libev)/lib"
    
  3. 强制从源码编译安装:
    pip install gevent==21.8.0 --no-binary :all:
    

注意:此方法可能遇到更多依赖兼容问题,需逐个排查解决。


内容的提问来源于stack exchange,提问作者Jonahtang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 18:30:43