【问题标题】:Issue with Python.h while building OpenCV.cbp with Code::Blocks使用 Code::Blocks 构建 OpenCV.cbp 时出现 Python.h 问题
【发布时间】:2019-09-29 14:32:08
【问题描述】:

我想安装 Opencv 并按照本教程进行操作:https://medium.com/@sourabhjigjinni/install-opencv-4-0-0-for-c-windows-7-10-code-blocks-tdm-gcc-64-dff65addf162

我一步一步地跟着它,在代码块中构建它,但是在大约 99% 的构建时我得到了错误: 致命错误:Python.h:没有这样的文件或目录。

PC : Windows 10, 64 bit, python3 已安装。

我在编译器的“搜索目录”部分添加了 python 包含目录的完整路径。 在使用 Cmake 生成 Makefile 时,我检查了是否填充了 python.exe 和包含目录的路径。 我也查了很多论坛,但都没有找到满意的答案...

[ 99%] Building CXX object modules/python3/CMakeFiles/opencv_python3.dir/__/src2/cv2.cpp.obj
cd /d C:\opencv\build\modules\python3 && C:\TDM-GCC-64\bin\g++.exe  -DCVAPI_EXPORTS -D_USE_MATH_DEFINES -D__OPENCV_BUILD=1 -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS @CMakeFiles/opencv_python3.dir/includes_CXX.rsp -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wuninitialized -Winit-self -Wsuggest-override -Wno-delete-non-virtual-dtor -Wno-comment -fdiagnostics-show-option -Wno-long-long -fomit-frame-pointer -ffunction-sections -fdata-sections  -msse -msse2 -msse3 -fvisibility=hidden -fvisibility-inlines-hidden -Wno-unused-function -Wno-deprecated-declarations -Wno-overloaded-virtual -Wno-undef -O3 -DNDEBUG  -DNDEBUG   -std=c++11 -o CMakeFiles\opencv_python3.dir\__\src2\cv2.cpp.obj -c C:\opencv\source\opencv-4.1.0\modules\python\src2\cv2.cpp

C:\opencv\source\opencv-4.1.0\modules\python\src2\cv2.cpp:9:20: fatal error: Python.h: No such file or directory

compilation terminated.
mingw32-make.exe[2]: *** [modules/python3/CMakeFiles/opencv_python3.dir/__/src2/cv2.cpp.obj] Error 1
mingw32-make.exe[1]: *** [modules/python3/CMakeFiles/opencv_python3.dir/all] Error 2
mingw32-make.exe: *** [all] Error 2
modules\python3\CMakeFiles\opencv_python3.dir\build.make:62: recipe for target 'modules/python3/CMakeFiles/opencv_python3.dir/__/src2/cv2.cpp.obj' failed
mingw32-make.exe[2]: Leaving directory 'C:/opencv/build'
CMakeFiles\Makefile2:3512: recipe for target 'modules/python3/CMakeFiles/opencv_python3.dir/all' failed
mingw32-make.exe[1]: Leaving directory 'C:/opencv/build'
C:/opencv/build/Makefile:161: recipe for target 'all' failed
Process terminated with status 2 (0 minute(s), 37 second(s))
4 error(s), 0 warning(s) (0 minute(s), 37 second(s))

好吧,我尽我所能让编译器知道 Python.h 在哪里,但它似乎不起作用。如果您需要更多数据,请告诉我。

【问题讨论】:

  • 我在编译器的搜索目录中添加了python包含目录的完整路径。我的猜测是您没有正确完成此步骤,因为它应该在 cd /d C:\opencv\build\modules\python3 && C:\TDM-GCC-64\bin\g++.exe -DCVAPI_EXPORTS ... 行中显示类似 -I/full/path/to/python-include-directory/ 的内容
  • 感谢您的回复!我在 Compiler - search directory 部分添加了 C:\Users\Me\AppData\Local\Programs\Python\Python37\include,难道还不够吗?
  • 奇怪的是,如果使用 :include 构建一个测试项目,它工作得非常好......只有 OpenCV.cbp 不起作用......
  • 为了确定,您是否将该路径添加到 code::blocks 或 Cmake?

标签: python c++ windows opencv codeblocks


【解决方案1】:

Cmake好像在@Cmakefiles/opencv_python.dir目录下找不到Python.h的头文件。

要尝试的事情:

  • 您可能需要尝试在Cmake界面中寻找如何设置@Cmakefiles/opencv_python.dir标志,或者在CMakeLists.txt中手动设置,并将其设置到正确的Python.h位置。

    李>
  • 另外,确保 Cmakes Python 包含路径标志正确 (PYTHON_INCLUDE=/path/to/python/include/)。

  • 最后,请按照here 这篇博文提供您的 Python 位置,确保您的 Python 路径设置正确。

编辑: 我能够按照说明进行构建和运行网络摄像头演示。这是在 Windows 10 上使用 Python 3.7.1 测试的。不确定在完全重新安装之前要尝试什么。如果您有任何问题或想知道具体信息,请告诉我,如果我想到任何尝试,我将编辑这篇文章。祝你好运。

【讨论】:

  • Python 已添加到我的路径中,PYTHON3_INCLUDE_DIR 路径是正确的,但我仍然收到错误消息。我将尝试强制在 CMakeLists.txt 中包含 python 标头。感谢您的帮助!
  • 这很奇怪......如果我稍后有时间,我会尝试在虚拟机上复制它。祝你好运,不客气!
  • 我将删除该项目并重新配置它,然后从头开始重建它。我第一次构建它时,我没有在 code::blocks 和其他东西中将 python 包含目录添加到编译器的“搜索目录”中。这可能是它的解决方案。感谢您的关注!
【解决方案2】:

好的,我从头开始重建所有内容(删除了 opencv/build 文件夹的内容 + 使用 Cmake 重新生成的 CMakeFiles)并且它自己构建没有任何错误。 我的错 : - 我第一次构建 OpenCV.cbp 时,我的 python 包含目录路径未在 code::blocks 的“搜索目录”中指定。 - 在几次不成功的构建之后,我改变了我的 python 版本,并在 Cmake 中实现了所有 python 路径,并将 include dir 路径添加到 code::blocks

问题:OpenCV.cbp 没有考虑到所有更改,即使重新构建它(idk 为什么),并一直要求 Python.h

解决问题: 在构建 OpenCV.cbp 之前,确保 Cmake 中指定的 python 路径正确,并将 python 包含目录添加到 code::blocks “搜索目录”,这不是我的情况。 然后,构建!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-25
    • 1970-01-01
    • 2017-11-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多