繁体   English   中英

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

[英]fatal error: 'Python.h' file not found while installing opencv

我正在尝试在我的 Mac OS X 10.10.5 上为 Python 安装 opencv 3.1 我正在按照此处概述的步骤进行操作 - http://www.pyimagesearch.com/2015/06/15/install-opencv-3- 0-和-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,而我的情况并非如此。 如果有人能指出正确的方向来解决这个问题,那就太好了。

谢谢,

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

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

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

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

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

你可以尝试运行:

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

然后尝试剩余的步骤。

brew install python

或者

brew upgrade python

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

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

这个问题似乎是关于集成到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版本以及在哪些位置。 它正在期待它。

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

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

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

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

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

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

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

brew install python@2
brew link python@2

我在 mac os 12.2.1 上解决了这个问题,如下所示: export CPPFLAGS="-I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7"然后pip install...

对我来说,它在尝试安装 pycurl 之前升级了pycurl

pip install --upgrade pip

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM