Windows 10下darkflow报No module named 'cy_yolo_findboxes'且模块已存在求解决
Windows 10 环境下darkflow提示
No module named 'darkflow.cython_utils.cy_yolo_findboxes'排查方案 该报错的核心原因是对应目录下仅存在Cython源码文件,未完成编译生成Python可识别的二进制扩展模块,哪怕能看到源码文件存在,没有编译产物也无法被Python加载。
分步解决流程
- 前置文件校验
打开darkflow/cython_utils/目录,核对文件清单:如果仅能看到cy_yolo_findboxes.pyx源文件,没有对应后缀为.pyd的编译产物,即可确认是编译流程缺失导致的报错。 - 安装适配的依赖版本
Windows环境下不匹配的Cython版本会导致后续编译失败,执行命令固定安装兼容版本:pip install cython==0.29.33 numpy
注意:Cython 3.x以上版本和darkflow旧版源码存在语法兼容问题,不要直接安装最新版本。 - 执行本地编译
进入darkflow源码的根目录(即包含setup.py文件的顶层文件夹),打开匹配当前Python环境的命令行,执行编译命令:python setup.py build_ext --inplace
编译流程无报错完成后,会自动在cython_utils目录下生成对应Python版本、系统架构的.pyd扩展文件。 - 导入有效性校验
编译完成后,在相同的Python环境下执行导入测试:from darkflow.cython_utils.cy_yolo_findboxes import yolo_box_constructor
无报错即代表模块可正常加载。
常见踩坑提示
- 必须保证执行编译的Python环境和后续运行darkflow脚本的Python环境完全一致,跨环境生成的.pyd文件无法被识别,会重复触发模块找不到的报错。
- 不要通过把
.pyx源文件手动重命名为.py的方式绕过报错,该操作会丢失Cython优化逻辑,后续运行时会触发函数调用异常。 - 如果使用Python 3.10及以上版本,编译时如果出现语法兼容报错,可直接对
cy_yolo_findboxes.pyx内的数组类型标注做兼容调整,不需要修改核心逻辑。
内容的提问来源于stack exchange,提问作者Nimesha
相关产品推荐
相关产品推荐

