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

执行build_ext后仍遇ModuleNotFoundError: No module named 'lib.rcnn.cython.bbox'

问题描述

接手一个需重写的项目,无法联系原开发者,代码片段如下:

from ..cython.bbox import bbox_overlaps_cython

def bbox_overlaps(boxes, query_boxes):
    return bbox_overlaps_cython(boxes, query_boxes)

运行时触发报错:

from ..cython.bbox import bbox_overlaps_cython
ModuleNotFoundError: No module named 'lib.rcnn.cython.bbox'

已在setup.py所在目录执行python3 setup.py build_ext --inplace编译,但错误未解决。项目目录结构如下:

rcnn
--cython
----bbox.pyx
----setup.py
--processing
----bbox_transform.py
解决方法
  • 检查setup.py配置
    打开rcnn/cython/setup.py,确认扩展模块的编译配置正确,确保编译产物输出到当前cython目录。参考配置示例:

    from distutils.core import setup
    from Cython.Build import cythonize
    import numpy as np
    
    setup(
        ext_modules=cythonize("bbox.pyx"),
        include_dirs=[np.get_include()]
    )
    

    若配置中指定了输出路径,需确认路径指向rcnn/cython。

  • 确认编译产物
    执行编译命令后,检查rcnn/cython目录下是否生成了类似bbox.cpython-xxx.so(Linux/macOS)或.pyd(Windows)的文件。如果没有,查看编译终端输出,排查依赖缺失问题(需提前安装Cython、numpy、gcc等编译工具)。

  • 修复导入路径

    • 若rcnn是项目根目录,在bbox_transform.py开头添加代码,将rcnn的父目录加入Python路径:
      import sys
      from pathlib import Path
      sys.path.append(str(Path(__file__).parent.parent))
      
    • 或者改用绝对导入,假设rcnn是顶层包,修改导入语句为:
      from rcnn.cython.bbox import bbox_overlaps_cython
      
  • 补全包结构
    在rcnn和rcnn/cython目录下分别创建空的__init__.py文件,让Python识别这些目录为合法包。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 21:28:29