簡體   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