致命错误:' Python.h'安装opencv时找不到文件

时间:2016-03-03 17:05:40

标签: python macos opencv

我想在我的Mac OS X 10.10.5上安装Python的opencv 3.1 我按照此处列出的步骤进行了操作 - http://www.pyimagesearch.com/2015/06/15/install-opencv-3-0-and-python-2-7-on-osx/

当我在所有设置之后实际尝试安装opencv时,我收到以下错误:

.../opencv/modules/python/src2/cv2.cpp:6:10: fatal error: 
  'Python.h' file not found
 #include <Python.h>
          ^

我环顾了StackOverflow,发现大多数人都在使用Anaconda,这不是我的情况。如果有人能指出我正确的方向来解决这个问题,那就太棒了。

谢谢,

9 个答案:

答案 0 :(得分:13)

如果在制作其中一个* .cpp文件时未找到Python.h,请设置以下ENV变量

Match

请检查系统中是否存在路径,并确保Python.h在那里。

答案 1 :(得分:11)

我正在使用El Capitan,但我不认为Python标头的路径应该有太大差异。我找到了我的:

/System/Library/Frameworks/Python.framework/Headers/Python.h

您可以尝试并运行:

export C_INCLUDE_PATH=/System/Library/Frameworks/Python.framework/Headers

然后尝试剩余的步骤。

答案 2 :(得分:4)

运行

brew install python

brew upgrade python

执行此操作后,您要安装的所有内容(在我的情况下都是vim)都会成功。

答案 3 :(得分:2)

我在OSX上遇到了同样的问题,通过设置CPLUS_INCLUDE_PATH环境变量来修复。 也是在一个可能有复杂事情的蟒蛇环境中建造。

export CPLUS_INCLUDE_PATH=~/anaconda/envs/py27/include/python2.7

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=~/anaconda/envs/py27/share \
    -D PYTHON2_PACKAGES_PATH=~/anaconda/envs/py27/lib/python2.7/site-packages \
    -D PYTHON2_LIBRARY=~/anaconda/envs/py27/bin/python \
    -D PYTHON_EXECUTABLE=~/anaconda/envs/py27/bin/python \
    -D PYTHON2_INCLUDE_DIR=~/anaconda/envs/py27/include/python2.7 \
    -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON \
    -D BUILD_EXAMPLES=ON \
    -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules ..

答案 4 :(得分:2)

这个问题似乎与集成到macOS中的默认Python2有关,该文件的地址为Python.h头文件:

/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7/Python.h

Python版本可能会更改,具体取决于您所使用的macOS版本。但是,如果您已经使用Hombrew安装了Python3,则可能应该在这样的路径中找到头文件:

/usr/local/Cellar/python/3.7.6_1/Frameworks/Python.framework/Versions/3.7/include/python3.7m/Python.h

取决于您安装的brew的Python3版本。同样,在Mac上也可以使用Python进行其他多种操作(例如,anaconda,intel python,pypy等)。找到特定Python.h路径的最佳方法是使用以下方法搜索整个设备:

sudo find / -iname "Python.h"

然后您可以运行命令

export C_INCLUDE_PATH=<path/to/the/specific/header/file>
在您的bash终端中

,或将其添加到~/.bash_profile中以使其永久存在。

您可能还想检查MakeFile(或该软件使用的其他工具,例如cmake ...),以查看期望的Python.h版本以及在什么位置。期待它。

答案 5 :(得分:1)

首先,您必须检查并确保已使用brew安装了python,并且您正在使用系统python lib二进制文件。博客中提到了这一点。

其次,cmake命令中的python版本必须与brew为您安装的版本匹配。你应该仔细检查一下。

答案 6 :(得分:1)

是,修改cmake命令中使用的路径。它们必须存在于您的文件系统中。在我的例子中,我安装了python 3.5,原始文档使用python 3.4。

答案 7 :(得分:0)

我的方法不同,但它基本上是乔纳森·刘所提到的。

我使用pyenv和conda并更改了导致问题的python lib路径。 要解决它,这就是我做的事情

  1. 在.bashrc
  2. 中注释了pyenv的PATH设置
  3. 根据需要重启终端和brew安装(在我的情况下为vim)
  4. 将.bashrc改回

答案 8 :(得分:0)

我通过安装python2.7解决了我的问题,显然它是使用python 3.4编译的。所以我做了以下事情:

brew install python@2
brew link python@2