📅  最后修改于: 2023-12-03 15:11:04.025000             🧑  作者: Mango
当你在使用 OpenCV 的时候,出现了 "没有名为 'skbuild' opencv 的模块" 错误,通常是因为缺少 "scikit-build" 库。
scikit-build 是一个用于构建 Python C/C++ 扩展的工具集合,它使用 CMake 作为底层构建系统,并提供了 CMake 扩展命令来规范化 Python 扩展的构建。
你可以使用 pip 来安装 scikit-build:
pip install scikit-build
假设你已经有一个 Python 包含 CPython 扩展的项目,并且需要使用 CMake 来构建它,这里有一些基本的步骤:
配置 setup.py
在 setup.py 中,你需要添加以下代码:
from skbuild import setup
setup(
name="your_package_name",
version="0.0.0",
cmake_args=['-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=./your_package_name'],
packages=['your_package_name']
)
这样可以确保在执行构建操作时正确地运行 CMake。
配置 setup.cfg
在 setup.cfg 中,你需要添加以下代码:
[build_ext]
# 排除不需要编译的文件
exclude = *.c, *.cython, *.pyx
# 使用 scikit-build 构建
# 参数 -j 表示使用并行化编译
builder = scikit-build -j4
# 指向 CMakeLists.txt 目录
cmake_sources = your_package_name
配置 CMakeLists.txt
在 CMakeLists.txt 中,你需要编写以下代码:
cmake_minimum_required(VERSION 3.13)
project(your_package_name VERSION 0.1.0)
find_package(OpenCV REQUIRED)
add_library(your_package_name SHARED
# 将你的 C/C++ 文件列表在这里
your_package_name_module.cpp
)
target_include_directories(your_package_name PUBLIC ${OpenCV_INCLUDE_DIRS})
target_link_libraries(your_package_name ${OpenCV_LIBS})
例如,"your_package_name_module.cpp" 是你的 C/C++ 扩展源代码文件。
编译项目
现在你可以使用以下命令来编译你的项目:
python setup.py build
编译后的文件在 your_package_name/build/lib.your_platform/your_package_name
目录下,如果你的构建系统支持建立 Python Wheels,你也可以使用以下命令:
python setup.py bdist_wheel
安装项目
编译完成后,你可以将项目安装到你的系统中:
python setup.py install
或者,如果你使用 Python Wheels 构建项目,你可以使用以下命令:
pip install ./dist/*.whl
以上就是使用 scikit-build 来构建 Python C/C++ 扩展的基本步骤,希望可以帮助到你解决 Opencv 中 "没有名为 'skbuild' opencv 的模块" 的问题。