【问题标题】:fatal error: 'Python.h' file not found while installing opencv致命错误:安装 opencv 时找不到“Python.h”文件
【发布时间】: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>
          ^

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

谢谢,

【问题讨论】:

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

标签: python macos opencv


【解决方案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 库路径。 为了解决它,这就是我所做的

      1. 注释掉 .bashrc 中 pyenv 的 PATH 设置
      2. 重新启动终端并 brew install 任何你需要的东西(在我的例子中是 vim)
      3. 将 .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
              

              然后尝试其余步骤。

              【讨论】:

                猜你喜欢
                • 2018-09-01
                • 2015-09-30
                • 1970-01-01
                • 2013-02-28
                • 2021-12-16
                • 2016-03-13
                • 2022-06-20
                • 2016-09-17
                • 2019-03-11
                相关资源
                最近更新 更多