Windows运行pcl.pytorch报错No module named 'utils.cython_bbox'
问题描述
我是编程新手学生,若问题较为基础还请谅解。我按照GitHub页面指引,尝试在voc2007数据集上运行PCL模型,对应项目地址为ppengtang/pcl.pytorch。
环境信息
- 操作系统:Windows 10 64位
- Python版本:3.10.5
- 已确认安装所有依赖项,包括Visual Studio C++库、SDK等,此前安装cython_bbox时遇到过较多问题。
执行命令
在CMD中执行如下测试命令:
python tools/test_net.py --cfg configs/baselines/vgg16_voc2007.yaml \ --load_ckpt Outputs/vgg16_voc2007/$MODEL_PATH \ --dataset voc2007trainval
报错信息
执行后返回如下输出:
C:\Users####\py_virtual_env\lib\site-packages\torchvision\models\detection\anchor_utils.py:63: UserWarning: Failed to initialize NumPy: module compiled against API version 0x10 but this version of numpy is 0xf (Triggered internally at ..\torch\csrc\utils\tensor_numpy.cpp:68.) device: torch.device = torch.device("cpu"), Traceback (most recent call last): File "C:\Users####\pcl.pytorch\tools\test_net.py", line 14, in <module> from core.test_engine import run_inference File "C:\Users####\pcl.pytorch\lib\core\test_engine.py", line 36, in <module> from core.test import im_detect_all File "C:\Users####\pcl.pytorch\lib\core\test.py", line 43, in <module> import utils.boxes as box_utils File "C:\Users####\pcl.pytorch\lib\utils\boxes.py", line 54, in <module> import utils.cython_bbox as cython_bbox ModuleNotFoundError: No module named 'utils.cython_bbox'
已排查内容
- 查看项目
lib\utils目录,发现路径下仅有cython_bbox.c和cython_bbox.pyx两个文件,推测这是问题根源,但不清楚具体原因与修复方法。 - 已在虚拟环境中安装cython_bbox,pip返回提示如下:
Requirement already satisfied: cython_bbox in c:\users####\py_virtual_env\lib\site-packages (0.1.3)
- 已在线检索相关解决方案,未找到有效方法。
解决方案
- 先修复NumPy版本不兼容警告:当前安装的NumPy版本与PyTorch依赖的API版本不匹配,执行
pip install --upgrade numpy升级NumPy到最新版本即可消除该警告,避免后续出现张量与NumPy数组转换的异常。 - 核心的
No module named 'utils.cython_bbox'报错,本质是项目依赖的本地Cython扩展未编译:pip安装到site-packages的cython_bbox是第三方独立包,和项目代码中导入的utils.cython_bbox不是同一个模块。你看到的.pyx是Cython源代码文件、.c是C语言中间文件,二者都不能直接被Python导入,必须编译生成Windows平台下的.pyd扩展文件才能正常加载。 - 编译本地Cython扩展的操作步骤:
- 确保虚拟环境中已安装Cython,执行
pip install cython完成安装。 - 在CMD中切换到项目根目录下的
lib文件夹。 - 执行编译命令:
python setup.py build_ext --inplace。 - 等待编译完成后,检查
lib/utils目录下是否生成了文件名类似cython_bbox.cp310-win_amd64.pyd的文件,该文件就是可被Python导入的编译后模块。
- 确保虚拟环境中已安装Cython,执行
- Windows平台编译注意事项:
- 执行编译命令前,需先配置好Visual Studio C++编译环境,可运行对应VS版本的
vcvarsall.bat脚本配置环境变量,避免出现编译器未找到的报错。 - 后续运行
test_net.py时,需将工作目录切换到项目根目录,保证Python能正确识别项目内的模块路径。
- 执行编译命令前,需先配置好Visual Studio C++编译环境,可运行对应VS版本的
内容的提问来源于stack exchange,提问作者user19421773
相关产品推荐
相关产品推荐

