Проблема с Python.h при сборке OpenCV.cbp с помощью Code::Blocks

Я хотел установить Opencv и следовал этому руководству: https://medium.com/@sourabhjigjinni/install-opencv-4-0-0-for-c-windows-7-10-code-blocks-tdm-gcc-64-dff65addf162

Я следовал этому шаг за шагом, построил его в блоках кода, но примерно на 99% я получил ошибку: фатальная ошибка: Python.h: нет такого файла или каталога.

ПК: Windows 10, 64-битная версия, установлен Python3.

Я добавил полный путь к каталогу включения python в разделе «каталоги поиска» компилятора. Я проверил, были ли заполнены пути к python.exe и к каталогу include при создании файлов Makefile с помощью Cmake. Я также просмотрел множество форумов, но так и не нашел удовлетворительного ответа...

[ 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 include в каталогах поиска компилятора.. Я предполагаю, что вы не сделали этот шаг правильно, потому что он должен сказать что-то вроде -I/full/path/to/python-include-directory/ в строке cd /d C:\opencv\build\modules\python3 && C:\TDM-GCC-64\bin\g++.exe -DCVAPI_EXPORTS ...
jackw11111 13.05.2019 11:01

Спасибо за ответ ! Я добавил C:\Users\Me\AppData\Local\Programs\Python\Python37\include в разделе Compiler - search directory, разве этого не должно быть достаточно?

Thibal 14.05.2019 18:29

Что странно, так это то, что если собрать тестовый проект с помощью: include <Python.h>, он отлично работает... Только OpenCV.cbp не работает...

Thibal 14.05.2019 18:31

Просто чтобы убедиться, вы добавили этот путь в code::blocks или Cmake?

jackw11111 14.05.2019 19:15
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
4
268
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Кажется, Cmake не может найти заголовочный файл Python.h в каталоге @Cmakefiles/opencv_python.dir.

Что попробовать:

  • Возможно, вам придется попытаться найти, как установить флаг @Cmakefiles/opencv_python.dir в интерфейсе Cmake или вручную в CMakeLists.txt и установить его в нужное Python.h место.

  • Кроме того, убедитесь, что флаг Cmake Python include path указан правильно (PYTHON_INCLUDE=/path/to/python/include/).

  • Наконец, убедитесь, что ваш путь Python установлен правильно, следуя этому сообщению здесь с вашим местоположением Python.

Редактировать: Я смог следовать инструкциям и получить демонстрацию веб-камеры для сборки и запуска. Это было протестировано в Windows 10 с Python 3.7.1. Не знаете, что попробовать, кроме полной переустановки. Если у вас есть какие-либо вопросы или вы хотите узнать конкретную информацию, дайте мне знать, и если я придумаю, что попробовать, я отредактирую этот пост. Удачи.

Python уже добавлен в мой путь, путь PYTHON3_INCLUDE_DIR правильный, и я все еще получаю сообщение об ошибке. Я попытаюсь принудительно включить заголовки Python в CMakeLists.txt. Спасибо за вашу помощь!

Thibal 15.05.2019 00:00

Это довольно странно... Если у меня будет время чуть позже, я попытаюсь воспроизвести это на виртуальной машине. Удачи, и добро пожаловать!

jackw11111 15.05.2019 00:33

Я удалю проект и перенастрою его, а затем перестрою с нуля. В первый раз, когда я его построил, я не добавлял каталог включения python в «каталоги поиска» компилятора в code::blocks и другие вещи. Это может быть решением для него. Спасибо за внимание!

Thibal 16.05.2019 18:41

Хорошо, я пересобрал все с нуля (удалил содержимое папки opencv/build + повторно сгенерировал CMakeFiles с помощью Cmake), и все собралось без ошибок. Мои ошибки : - В первый раз, когда я создал OpenCV.cbp, мой путь к папке python include не был указан в «каталогах поиска» в code::blocks. - После нескольких неудачных сборок я изменил свою версию Python и актуализировал все пути Python в Cmake и добавил путь include dir в code::blocks.

Проблема: OpenCV.cbp не учла все изменения, даже если пересобрала его (почему), и продолжала запрашивать Python.h

Решить проблему : ПЕРЕД созданием OpenCV.cbp убедитесь, что пути python, указанные в Cmake, верны, и добавьте каталог python include в code::blocks «каталоги поиска», что не было в моем случае. Тогда строй!

Другие вопросы по теме