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

Posted

技术标签:

【中文标题】致命错误:安装 opencv 时找不到“Python.h”文件【英文标题】:fatal error: 'Python.h' file not found while installing opencv 【发布时间】:2016-06-17 03:38:52 【问题描述】:

我正在尝试在我的 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>
          ^

我查看了 ***,发现大多数面临此问题的人都在使用 Anaconda,而我的情况并非如此。如果有人能指出我正确的方向来解决这个问题,那就太好了。

谢谢,

【问题讨论】:

搜索如何在OSX上安装python-dev 全部完成了 - XCode 命令行、Brew、python、virtualenv。还要在 bash_profile 中设置 PATH。我错过了什么吗? 你需要设置 C_INCLUDE_PATH 试试这个 -> ***.com/a/47956013/4502723 【参考方案1】:

这个问题似乎是关于默认的Python2集成到macOS中的,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 的版本和位置。它期待它。

【讨论】:

如何添加到cmake?我仍然无法构建 @ShravyaBoggarapu 抱歉,这篇文章是很久以前的了。我认为您应该研究 CMake FindPython。例如here.【参考方案2】:

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

brew install python@2
brew link python@2

【讨论】:

【参考方案3】:

运行

brew install python

brew upgrade python

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

【讨论】:

【参考方案4】:

我的方法不同,但基本上就是 Jonathan Lau 提到的。

我使用了 pyenv 和 conda 并更改了导致问题的 python 库路径。 为了解决它,这就是我所做的

    注释掉 .bashrc 中 pyenv 的 PATH 设置 重新启动终端并 brew install 任何你需要的东西(在我的例子中是 vim) 将 .bashrc 改回来

【讨论】:

【参考方案5】:

我在 OSX 上遇到了同样的问题,通过设置 CPLUS_INCLUDE_PATH 环境变量来解决。 还在 anaconda 环境中构建,这可能会带来复杂的事情。

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 ..

【讨论】:

谢谢,它也适用于我的虚拟环境由 pyenv 提供的情况【参考方案6】:

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

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

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

【讨论】:

【参考方案7】:

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

【讨论】:

【参考方案8】:

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

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

【讨论】:

【参考方案9】:

我正在使用El Capitan,但我认为 Python 标头的路径应该没有太大区别。我在以下位置找到我的:

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

您可以尝试运行:

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

然后尝试其余步骤。

【讨论】:

以上是关于致命错误:安装 opencv 时找不到“Python.h”文件的主要内容,如果未能解决你的问题,请参考以下文章

致命错误:未捕获的错误:在 magento 2 中刷新缓存时找不到类“DOMDocument”

MATLAB + Mex + OpenCV:链接和编译正确,但在运行时找不到库

在 VS 2008 上启动 OpenCV 2.4.6 时出现致命错误,找不到文件

Composer 自动加载器在运行测试时找不到 PHPUnit

安装 CuSpatial 或 CuDf 库时找不到包错误

DLL 加载失败:执行“从 mpi4py 导入 MPI”时找不到指定的模块