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

使用Cython将Python转C编译时报_Py_CheckRecursionLimit未定义错误求解

问题根源

你出现符号缺失错误的核心原因是手动软链接的_multiarray_umath.cpython-37m-x86_64-linux-gnu.so是Python3.7编译的numpy版本,和你当前使用的Python3.10 ABI完全不兼容,Python3.9起移除的_Py_CheckRecursionLimit符号在Python3.7版本的numpy编译产物中被依赖,才会触发报错。

可行解决步骤
  • 第一步:删除之前手动创建的软链接,以及本地留存的Python3.7版本numpy副本,避免不兼容文件干扰后续编译
  • 第二步:使用对应Python3.10版本的pip安装适配的numpy,执行命令:
/home/me/PYTHON-3.10.0/bin/pip3 install numpy
  • 第三步:修改setup.py配置,添加numpy头文件目录,避免Cython编译阶段找不到numpy依赖:
from setuptools import setup
from Cython.Build import cythonize
from Cython.Compiler import Options
import numpy

Options.embed = "main"

setup(
 ext_modules = cythonize("make_region.pyx"),
 include_dirs = [numpy.get_include()]
)
  • 第四步:重新执行Cython转C代码的流程,执行命令:
/home/me/PYTHON-3.10.0/bin/python3 setup.py build_ext --inplace
  • 第五步:使用原来的gcc命令重新编译生成的make_region.c即可解决当前报错
后续Android适配提示

如果要最终在Android系统运行,后续还需要使用Android NDK对生成的C代码、Python3.10库、numpy库进行交叉编译,匹配目标Android设备的CPU架构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 14:24:04