不能';运行make时无法识别Python.h
摘要 对于OpenCV环境,在CMake配置之后,我尝试了不能';运行make时无法识别Python.h,python,opencv,makefile,cmake,anaconda,Python,Opencv,Makefile,Cmake,Anaconda,摘要 对于OpenCV环境,在CMake配置之后,我尝试了make,但出现了错误,说Python.h:没有这样的文件或目录 环境 ubuntu 18.04 Pyev上的蟒蛇A3-5.3.1 蟒蛇3.7 opencv(4.0.1)和opencv_contrib(4.0.1) 我所做的 首先,我尝试使用下面的一些选项进行配置。$CONDA_HOME等于/HOME/qcmp/anaconda3 (cv) (anaconda3-5.3.1/envs/cv) (base) qcmp@qcmp-Alie
make
,但出现了错误,说Python.h:没有这样的文件或目录
环境
- ubuntu 18.04
- Pyev上的蟒蛇A3-5.3.1
- 蟒蛇3.7
- opencv(4.0.1)和opencv_contrib(4.0.1)
$CONDA_HOME
等于/HOME/qcmp/anaconda3
(cv) (anaconda3-5.3.1/envs/cv) (base) qcmp@qcmp-Alienware-Aurora-R8:~/opencv/build$ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules -D PYTHON3_EXECUTABLE=$CONDA_HOME/envs/cv/bin/python -D PYTHON3_PACKAGES_PATH=$CONDA_HOME/envs/cv/lib/python3.7/site-packages -D BUILD_opencv_python2=OFF -D BUILD_opencv_python3=ON -D INSTALL_PYTHON_EXAMPLES=ON -D INSTALL_C_EXAMPLES=OFF -D OPENCV_ENABLE_NONFREE=ON -D BUILD_EXAMPLES=ON -D ENABLE_PRECOMPILED_HEADERS=OFF -D BUILD_TESTS=OFF -D PYTHON3_LIBRARY=/home/qcmp/anaconda3/lib/libpython3.7m.so -D PYTHON3_INCLUDE_DIR=/home/qcmp/anaconda3/include/python3.7m -D WITH_CUBLAS=OFF -D OpenBLAS_FOUND=OFF ..
输出为。有一些警告,如找不到OpenBLAS include
,但可能与生成问题无关(?)
之后,当make-j8
时,出现如下错误:
/home/qcmp/opencv/modules/python/src2/cv2.cpp:9:10: fatal error: Python.h: No such file or directory
#include <Python.h>
^~~~~~~~~~
compilation terminated.
modules/python3/CMakeFiles/opencv_python3.dir/build.make:62: recipe for target 'modules/python3/CMakeFiles/opencv_python3.dir/__/src2/cv2.cpp.o' failed
make[2]: *** [modules/python3/CMakeFiles/opencv_python3.dir/__/src2/cv2.cpp.o] Error 1
CMakeFiles/Makefile2:12152: recipe for target 'modules/python3/CMakeFiles/opencv_python3.dir/all' failed
make[1]: *** [modules/python3/CMakeFiles/opencv_python3.dir/all] Error 2
搜索参考如下
$ which python
/home/qcmp/.pyenv/shims/python
$ python -c "from distutils.sysconfig import get_python_inc; print(get_python_inc())"
/home/qcmp/.pyenv/versions/anaconda3-5.3.1/envs/cv/include/python3.7m
$ python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())"
/home/qcmp/.pyenv/versions/anaconda3-5.3.1/envs/cv/lib/python3.7/site-packages
$ python -c "import sys; print(sys.prefix)"
/home/qcmp/.pyenv/versions/anaconda3-5.3.1/envs/cv
$ python -c "import distutils.sysconfig as sysconfig; print(sysconfig.get_config_var('LIBDIR') + '/' + sysconfig.get_config_var('LDLIBRARY'))"
/home/qcmp/.pyenv/versions/anaconda3-5.3.1/envs/cv/lib/libpython3.7m.so
但是,我仍然收到相同的错误。欢迎使用Stackoverflow!!看起来您可能在cmake
的选项中提供了两个不同的Python位置。您有这个$CONDA_HOME/envs/cv/bin/python
和这个/HOME/qcmp/anaconda3/lib
。它们真的指向同一个Python安装吗?如果不是,这是故意的吗?我忘了说$CONDA_HOME
等于/HOME/qcmp/anaconda3
。另外,我对Python的位置感到困惑。我同意将/home/qcmp/anaconda3/lib
,/home/qcmp/anaconda3/envs/cv/lib
或$CONDA_home/envs/cv/lib
改为正确。但是,这无法修复错误。[已编辑]$CONDA_HOME
不等于/HOME/qcmp/anaconda3
,而是/HOME/qcmp/.pyenv/versions/anaconda3-5.3.1
。
$ which python
/home/qcmp/.pyenv/shims/python
$ python -c "from distutils.sysconfig import get_python_inc; print(get_python_inc())"
/home/qcmp/.pyenv/versions/anaconda3-5.3.1/envs/cv/include/python3.7m
$ python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())"
/home/qcmp/.pyenv/versions/anaconda3-5.3.1/envs/cv/lib/python3.7/site-packages
$ python -c "import sys; print(sys.prefix)"
/home/qcmp/.pyenv/versions/anaconda3-5.3.1/envs/cv
$ python -c "import distutils.sysconfig as sysconfig; print(sysconfig.get_config_var('LIBDIR') + '/' + sysconfig.get_config_var('LDLIBRARY'))"
/home/qcmp/.pyenv/versions/anaconda3-5.3.1/envs/cv/lib/libpython3.7m.so