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

Cython执行build_ext --inplace未生成.so/.pyd文件原因排查

Cython仅生成.c文件无pyd/so文件原因及解决方案
  • 未指定MinGW编译器:Windows平台下Python的distutils默认使用MSVC作为编译后端,你当前使用MinGW作为编译工具,需要在执行命令时显式指定编译器,否则生成C文件后会因找不到对应编译工具直接终止流程,不会生成最终的pyd扩展文件。调整后的执行命令为:
    python setup.py build_ext --inplace --compiler=mingw32
  • MinGW与Python位数不匹配:你使用的是64位Windows 7和64位Python 3.8,必须对应安装64位版本的MinGW-w64,若安装的是32位MinGW,编译过程会因架构不匹配中断。可执行gcc -v查看当前gcc版本信息,若Target项为x86_64-w64-mingw32则为64位版本,若为i686-w64-mingw32则为32位版本,需重新安装对应架构的MinGW。
  • 环境变量配置缺失:需要将MinGW安装目录下的bin文件夹路径加入系统环境变量PATH中,确保distutils可以正常调用gcc、ld等编译链接工具。修改环境变量后需要重启终端再执行编译命令才会生效。
  • Python 3.8与MinGW兼容问题:Cython 0.29.24编译Python 3.8及以上版本的扩展时,MinGW可能会出现找不到vcruntime相关依赖的报错,你可以选择升级Cython到最新的0.29.x版本,也可以在setup.py中添加编译参数适配,示例修改后的setup.py如下:
import os
from distutils.core import setup
from Cython.Build import cythonize

os.chdir(os.path.dirname(__file__))
setup(
    ext_modules = cythonize('example123.pyx'),
    options={"build_ext": {"compiler": "mingw32"}},
    extra_compile_args=["-DMS_WIN64"]
)
  • 排查具体报错信息:如果上述操作都完成后还是没有生成pyd文件,可以在编译命令中添加-v参数输出详细编译日志,定位具体报错环节:
    python setup.py build_ext --inplace -v

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 10:57:03