Rocky Linux 9编译带CUDA支持的OpenCV-Python失败求助
编译支持CUDA的opencv-python时CMake配置失败问题
问题概述
尝试编译支持CUDA的opencv-python以运行SIFT,执行pip wheel . --verbose时出现CMake配置不完整的错误,且无法找到CMake输出文件定位具体问题。
已执行操作
- 递归克隆仓库:
git clone --recursive https://github.com/opencv/opencv-python.git - 进入仓库目录:
cd opencv-python - 设置环境变量并执行编译:
export CMAKE_ARGS="-DWITH_CUDA=ON -DCMAKE_BUILD_TYPE=Release -DENABLE_FAST_MATH=1 -DCUDA_FAST_MATH=1 -DWITH_CUBLAS=1 -DOPENCV_DNN_CUDA=ON" export ENABLE_CONTRIB=1 pip wheel . --verbose
错误输出
-- Configuring incomplete, errors occurred! Traceback (most recent call last): File "/tmp/pip-build-env-hrc4y4f6/overlay/lib/python3.9/site-packages/skbuild/setuptools_wrap.py", line 664, in setup env = cmkr.configure( File "/tmp/pip-build-env-hrc4y4f6/overlay/lib/python3.9/site-packages/skbuild/cmaker.py", line 354, in configure raise SKBuildError(msg) An error occurred while configuring with CMake. Command: /tmp/pip-build-env-hrc4y4f6/overlay/lib64/python3.9/site-packages/cmake/data/bin/cmake /home/grant/chinese_test/opencv-python/opencv -G 'Unix Makefiles' --no-warn-unused-cli -DCMAKE_INSTALL_PREFIX:PATH=/home/grant/chinese_test/opencv-python/_skbuild/linux-x86_64-3.9/cmake-install -DPYTHON_VERSION_STRING:STRING=3.9.18 -DSKBUILD:INTERNAL=TRUE -DCMAKE_MODULE_PATH:PATH=/tmp/pip-build-env-hrc4y4f6/overlay/lib/python3.9/site-packages/skbuild/resources/cmake -DPYTHON_EXECUTABLE:PATH=/usr/bin/python3 -DPYTHON_INCLUDE_DIR:PATH=/usr/include/python3.9 -DPYTHON_LIBRARY:PATH=/usr/lib64/libpython3.9.so -DPython_EXECUTABLE:PATH=/usr/bin/python3 -DPython_ROOT_DIR:PATH=/usr -DPython_FIND_REGISTRY:STRING=NEVER -DPython_INCLUDE_DIR:PATH=/usr/include/python3.9 -DPython_NumPy_INCLUDE_DIRS:PATH=/tmp/pip-build-env-hrc4y4f6/overlay/lib64/python3.9/site-packages/numpy/_core/include -DPython3_EXECUTABLE:PATH=/usr/bin/python3 -DPython3_ROOT_DIR:PATH=/usr -DPython3_FIND_REGISTRY:STRING=NEVER -DPython3_INCLUDE_DIR:PATH=/usr/include/python3.9 -DPython3_NumPy_INCLUDE_DIRS:PATH=/tmp/pip-build-env-hrc4y4f6/overlay/lib64/python3.9/site-packages/numpy/_core/include -DWITH_CUDA=ON -DCMAKE_BUILD_TYPE=Release -DENABLE_FAST_MATH=1 -DCUDA_FAST_MATH=1 -DWITH_CUBLAS=1 -DOPENCV_DNN_CUDA=ON -DPYTHON3_EXECUTABLE=/usr/bin/python3 -DPYTHON_DEFAULT_EXECUTABLE=/usr/bin/python3 -DPYTHON3_INCLUDE_DIR=/usr/include/python3.9 -DPYTHON3_LIBRARY=/usr/lib64/libpython3.9.so -DBUILD_opencv_python3=ON -DBUILD_opencv_python2=OFF -DBUILD_opencv_java=OFF -DOPENCV_PYTHON3_INSTALL_PATH=python -DINSTALL_CREATE_DISTRIB=ON -DBUILD_opencv_apps=OFF -DBUILD_opencv_freetype=OFF -DBUILD_SHARED_LIBS=OFF -DBUILD_TESTS=OFF -DBUILD_PERF_TESTS=OFF -DBUILD_DOCS=OFF -DPYTHON3_LIMITED_API=ON -DBUILD_OPENEXR=ON -DOPENCV_EXTRA_MODULES_PATH=/home/grant/chinese_test/opencv-python/opencv_contrib/modules -DWITH_CUDA=ON -DCMAKE_BUILD_TYPE=Release -DENABLE_FAST_MATH=1 -DCUDA_FAST_MATH=1 -DWITH_CUBLAS=1 -DOPENCV_DNN_CUDA=ON Source directory: /home/grant/chinese_test/opencv-python/opencv Working directory: /home/grant/chinese_test/opencv-python/_skbuild/linux-x86_64-3.9/cmake-build Please see CMake's output for more information. error: subprocess-exited-with-error × Building wheel for opencv-contrib-python (pyproject.toml) did not run successfully. │ exit code: 1 ╰─> See above for output. note: This error originates from a subprocess, and is likely not a problem with pip. full command: /usr/bin/python3 /home/grant/.local/lib/python3.9/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py build_wheel /tmp/tmpzppm94gi cwd: /home/grant/chinese_test/opencv-python Building wheel for opencv-contrib-python (pyproject.toml) ... error ERROR: Failed building wheel for opencv-contrib-python Failed to build opencv-contrib-python ERROR: Failed to build one or more wheels
排查难点
已递归搜索目录树,但未找到CMake相关输出文件,无法定位具体配置错误。
排查与解决建议
强制生成CMake日志文件
手动执行CMake命令并指定日志输出,直接在CMake工作目录运行:cd /home/grant/chinese_test/opencv-python/_skbuild/linux-x86_64-3.9/cmake-build /tmp/pip-build-env-hrc4y4f6/overlay/lib64/python3.9/site-packages/cmake/data/bin/cmake /home/grant/chinese_test/opencv-python/opencv -G 'Unix Makefiles' --no-warn-unused-cli -DCMAKE_INSTALL_PREFIX:PATH=/home/grant/chinese_test/opencv-python/_skbuild/linux-x86_64-3.9/cmake-install -DPYTHON_VERSION_STRING:STRING=3.9.18 -DSKBUILD:INTERNAL=TRUE -DCMAKE_MODULE_PATH:PATH=/tmp/pip-build-env-hrc4y4f6/overlay/lib/python3.9/site-packages/skbuild/resources/cmake -DPYTHON_EXECUTABLE:PATH=/usr/bin/python3 -DPYTHON_INCLUDE_DIR:PATH=/usr/include/python3.9 -DPYTHON_LIBRARY:PATH=/usr/lib64/libpython3.9.so -DPython_EXECUTABLE:PATH=/usr/bin/python3 -DPython_ROOT_DIR:PATH=/usr -DPython_FIND_REGISTRY:STRING=NEVER -DPython_INCLUDE_DIR:PATH=/usr/include/python3.9 -DPython_NumPy_INCLUDE_DIRS:PATH=/tmp/pip-build-env-hrc4y4f6/overlay/lib64/python3.9/site-packages/numpy/_core/include -DPython3_EXECUTABLE:PATH=/usr/bin/python3 -DPython3_ROOT_DIR:PATH=/usr -DPython3_FIND_REGISTRY:STRING=NEVER -DPython3_INCLUDE_DIR:PATH=/usr/include/python3.9 -DPython3_NumPy_INCLUDE_DIRS:PATH=/tmp/pip-build-env-hrc4y4f6/overlay/lib64/python3.9/site-packages/numpy/_core/include -DWITH_CUDA=ON -DCMAKE_BUILD_TYPE=Release -DENABLE_FAST_MATH=1 -DCUDA_FAST_MATH=1 -DWITH_CUBLAS=1 -DOPENCV_DNN_CUDA=ON -DPYTHON3_EXECUTABLE=/usr/bin/python3 -DPYTHON_DEFAULT_EXECUTABLE=/usr/bin/python3 -DPYTHON3_INCLUDE_DIR=/usr/include/python3.9 -DPYTHON3_LIBRARY=/usr/lib64/libpython3.9.so -DBUILD_opencv_python3=ON -DBUILD_opencv_python2=OFF -DBUILD_opencv_java=OFF -DOPENCV_PYTHON3_INSTALL_PATH=python -DINSTALL_CREATE_DISTRIB=ON -DBUILD_opencv_apps=OFF -DBUILD_opencv_freetype=OFF -DBUILD_SHARED_LIBS=OFF -DBUILD_TESTS=OFF -DBUILD_PERF_TESTS=OFF -DBUILD_DOCS=OFF -DPYTHON3_LIMITED_API=ON -DBUILD_OPENEXR=ON -DOPENCV_EXTRA_MODULES_PATH=/home/grant/chinese_test/opencv-python/opencv_contrib/modules -DWITH_CUDA=ON -DCMAKE_BUILD_TYPE=Release -DENABLE_FAST_MATH=1 -DCUDA_FAST_MATH=1 -DWITH_CUBLAS=1 -DOPENCV_DNN_CUDA=ON 2>&1 > cmake_config_log.txt执行后查看
cmake_config_log.txt即可获取完整的CMake配置错误信息。检查CUDA环境完整性
- 验证CUDA Toolkit安装:运行
nvcc --version确认版本,确保与当前OpenCV分支支持的CUDA版本匹配 - 检查CUDA环境变量:确认
CUDA_HOME、PATH、LD_LIBRARY_PATH已正确配置,示例命令:echo $CUDA_HOME echo $PATH | grep cuda echo $LD_LIBRARY_PATH | grep cuda
- 验证CUDA Toolkit安装:运行
清理缓存后重新编译
- 删除现有构建目录:
rm -rf _skbuild - 重新设置环境变量并执行编译:
export CMAKE_ARGS="-DWITH_CUDA=ON -DCMAKE_BUILD_TYPE=Release -DENABLE_FAST_MATH=1 -DCUDA_FAST_MATH=1 -DWITH_CUBLAS=1 -DOPENCV_DNN_CUDA=ON" export ENABLE_CONTRIB=1 pip wheel . --verbose
- 删除现有构建目录:
检查基础依赖完整性
确保系统已安装OpenCV编译所需的基础依赖,以Ubuntu/Debian为例:sudo apt-get install build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libdc1394-22-dev
内容的提问来源于stack exchange,提问作者Grant Curell
相关产品推荐
相关产品推荐

