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

Ubuntu22.04下Python3.10虚拟环境安装cffi失败求助

问题

全新安装Ubuntu 22.04系统,创建了Python 3.10虚拟环境,已安装的相关包包括:

libpython3.10:amd64
libpython3.10-dbg:amd64
libpython3.10-dev:amd64
libpython3.10-minimal:amd64
libpython3.10-stdlib:amd64
python3.10
python3.10-dbg
python3.10-dev
python3.10-minimal
python3.10-venv

执行pip install cffi==1.14.0时编译失败,核心错误为:

c/_cffi_backend.c: In function ‘ctypedescr_dealloc’:
c/_cffi_backend.c:407:23: error: lvalue required as left operand of assignment
  407 |         Py_REFCNT(ct) = 43;
      |                       ^
c/_cffi_backend.c:410:23: error: lvalue required as left operand of assignment
  410 |         Py_REFCNT(ct) = 0;
      |                       ^

已重装Python相关包,问题未解决,寻求可行解决办法。

解决办法

1. 升级cffi到兼容Python 3.10的版本

cffi 1.14.0发布于2020年,不支持2021年推出的Python 3.10。直接安装兼容版本:

pip install cffi>=1.15.0

这是最稳妥的解决方案,若项目依赖允许,优先选择此方法。

2. 补充系统编译依赖

编译cffi除Python开发包外,还需要libffi的开发库,执行以下命令安装:

sudo apt-get install libffi-dev

安装完成后重新尝试pip install cffi==1.14.0。

3. 使用预编译wheel包(若存在)

手动下载适配Python 3.10和Ubuntu 22.04的cffi 1.14.0 wheel包,本地安装:

# 示例命令,需替换为实际下载的wheel文件名
pip install cffi-1.14.0-cp310-cp310-linux_x86_64.whl

4. 手动修补cffi 1.14.0源码(仅当必须使用该版本时)

  • 下载cffi-1.14.0.tar.gz并解压
  • 打开c/_cffi_backend.c,找到ctypedescr_dealloc函数中的代码:
    Py_REFCNT(ct) = 43;
    ...
    Py_REFCNT(ct) = 0;
    
    修改为Python 3.10兼容的写法:
    Py_SET_REFCNT(ct, 43);
    ...
    Py_SET_REFCNT(ct, 0);
    
  • 进入解压目录执行pip install .完成安装

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 04:55:17