🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
CMake

CMakeはクロスプラットフォームで作動するオープンソースのビルドシステムです。コマンドライン又は組み込まれた開発環境で使うことができる元のmakefileとプロジェクトファイルを生成します。

Anaconda

Anacondaは、Python本体とPythonで利用されるライブラリを一括でインストールできるパッケージです。環境構築が容易になるため、Python開発者間ではよく利用されており、商用目的としても利用できます。

include

あるファイルで定義された関数や処理を、別のファイル上でも使用できるようにするプロセスをincludeと呼びます。

make

make は、ビルド作業を自動化するツールです。さまざまなファイルの最終変更時刻を比較し、従属するファイルよりも「ターゲット」のファイルが古いことがわかったときユーザーが設定していた命令を実行する事が可能です。

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Q&A

解決済

2回答

6331閲覧

make時にPython.hが認識されない

shmpwk

総合スコア13

CMake

CMakeはクロスプラットフォームで作動するオープンソースのビルドシステムです。コマンドライン又は組み込まれた開発環境で使うことができる元のmakefileとプロジェクトファイルを生成します。

Anaconda

Anacondaは、Python本体とPythonで利用されるライブラリを一括でインストールできるパッケージです。環境構築が容易になるため、Python開発者間ではよく利用されており、商用目的としても利用できます。

include

あるファイルで定義された関数や処理を、別のファイル上でも使用できるようにするプロセスをincludeと呼びます。

make

make は、ビルド作業を自動化するツールです。さまざまなファイルの最終変更時刻を比較し、従属するファイルよりも「ターゲット」のファイルが古いことがわかったときユーザーが設定していた命令を実行する事が可能です。

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

0グッド

0クリップ

投稿2019/10/22 01:07

編集2019/10/25 05:55

[問題]
opencvの環境作りのためにcmakeのconfigure後にmakeしようとしたら、errorが出てしまいます。

[環境]
ubuntu 18.04
pyenv上でanaconda3-5.3.1
python3.7
opencv4.0.1とcontrib4.0.1の導入

[手順]

以下のようなオプションでcmakeをconfigureさせました。

(cv) (anaconda3-5.3.1/envs/cv) (base) qcmp@qcmp-Alienware-Aurora-R8:~/opencv/build$ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules -D PYTHON3_EXECUTABLE=$CONDA_HOME/envs/cv/bin/python -D PYTHON3_PACKAGES_PATH=$CONDA_HOME/envs/cv/lib/python3.7/site-packages -D BUILD_opencv_python2=OFF -D BUILD_opencv_python3=ON -D INSTALL_PYTHON_EXAMPLES=ON -D INSTALL_C_EXAMPLES=OFF -D OPENCV_ENABLE_NONFREE=ON -D BUILD_EXAMPLES=ON -D ENABLE_PRECOMPILED_HEADERS=OFF -D BUILD_TESTS=OFF -D PYTHON3_LIBRARY=/home/qcmp/anaconda3/lib/libpython3.7m.so -D PYTHON3_INCLUDE_DIR=/home/qcmp/anaconda3/include/python3.7m -D WITH_CUBLAS=OFF -D OpenBLAS_FOUND=OFF ..

その時の出力は文字数の関係でこちらのリンクに載せます。

その後make -j8をすると、以下のようなエラーが出ます。(一部抜粋)

/home/qcmp/opencv/modules/python/src2/cv2.cpp:9:10: fatal error: Python.h: そのようなファイルやディレクトリはありません #include <Python.h> ^~~~~~~~~~ compilation terminated. modules/python3/CMakeFiles/opencv_python3.dir/build.make:62: recipe for target 'modules/python3/CMakeFiles/opencv_python3.dir/__/src2/cv2.cpp.o' failed make[2]: *** [modules/python3/CMakeFiles/opencv_python3.dir/__/src2/cv2.cpp.o] Error 1 CMakeFiles/Makefile2:12152: recipe for target 'modules/python3/CMakeFiles/opencv_python3.dir/all' failed make[1]: *** [modules/python3/CMakeFiles/opencv_python3.dir/all] Error 2

Python.hがないということですが、cmake時に-D PYTHON3_LIBRARY=/home/qcmp/anaconda3/lib/libpython3.7m.so -D PYTHON3_INCLUDE_DIR=/home/qcmp/anaconda3/include/python3.7mとパスを設定し、実際にPython.hがhome/qcmp/anaconda3/include/python3.7m/Python.hにあります。

他に直すべきところを教えていただきたいです。

[追記]
cmakeのオプションを以下のように変えてみました。該当ファイルパスを検索しています。

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=$(python -c "import sys; print(sys.prefix)") -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules -D PYTHON3_INCLUDE_DIR=$(python -c "from distutils.sysconfig import get_python_inc; print(get_python_inc())") -D PYTHON3_EXECUTABLE=$(which python) -D PYTHON3_PACKAGES_PATH=$(python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())") -D PYTHON3_LIBRARY=$(python -c "import distutils.sysconfig as sysconfig; print(sysconfig.get_config_var('LIBDIR') + '/' + sysconfig.get_config_var('LDLIBRARY'))") -D BUILD_opencv_python2=OFF -D BUILD_opencv_python3=ON -D INSTALL_PYTHON_EXAMPLES=ON -D INSTALL_C_EXAMPLES=OFF -D OPENCV_ENABLE_NONFREE=ON -D BUILD_EXAMPLES=ON ..

検索結果は以下のようになっています。

$ which python /home/qcmp/.pyenv/shims/python $ python -c "from distutils.sysconfig import get_python_inc; print(get_python_inc())" /home/qcmp/.pyenv/versions/anaconda3-5.3.1/envs/cv/include/python3.7m $ python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())" /home/qcmp/.pyenv/versions/anaconda3-5.3.1/envs/cv/lib/python3.7/site-packages $ python -c "import sys; print(sys.prefix)" /home/qcmp/.pyenv/versions/anaconda3-5.3.1/envs/cv $ python -c "import distutils.sysconfig as sysconfig; print(sysconfig.get_config_var('LIBDIR') + '/' + sysconfig.get_config_var('LDLIBRARY'))" /home/qcmp/.pyenv/versions/anaconda3-5.3.1/envs/cv/lib/libpython3.7m.so

しかし、最初と同じエラーが出ます。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

こちら全てインストールからやり直してエラーが消えました

投稿2020/05/25 15:39

shmpwk

総合スコア13

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

エラーはgccが出しているので、挙げられている環境変数は直接関係ないと思います。

おそらくpython-devとかいう名前のパッケージをapt installすれば解決するのではないでしょうか。

投稿2019/10/22 04:53

KojiDoi

総合スコア13692

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shmpwk

2019/10/22 05:15

ご回答ありがとうございます。 まず、gccがエラーを出しているというのは、どこで判断ができるか教えていただきたいです。 また、python-devは既に最新のものがインストール済みでした。
KojiDoi

2019/10/22 05:22

エラーメッセージにcppと出ていますので問題はCコンパイラ関係です。ubuntuなのでgccだろうと判断しました。 環境変数で探索ディレクトリを追加指定してやればどうでしょうか。 参考: https://qiita.com/DQNEO/items/4e5c2eca2761ec08b922
shmpwk

2019/10/26 00:01 編集

すみません、あまりよくわからず調べて返信に時間がかかってしまいましたが、環境変数で探索ディレクトリを追加指定するのはcmakeのオプション-Dで追加するということでしょうか?gccのオプション -Iをやるということでしょうか? 前者はもともとやっているので、後者を試してみましたが、ファイルがみつからないと出ました。 ``` $ gcc -I /home/qcmp/.pyenv/versions/anaconda3-5.3.1/envs/cv/include/python3.7m Python.h gcc: error: Python.h: そのようなファイルやディレクトリはありません gcc: fatal error: no input files ``` パスはあっていると思うのですが、、、
shmpwk

2019/10/26 00:01 編集

python3.7m下にPython.cを作ってPython.hをincludeしてみましたが、ダメでした。 ``` ~$ gcc -I /home/qcmp/.pyenv/versions/anaconda3-5.3.1/envs/cv/include/python3.7m Python.c gcc: error: Python.c: そのようなファイルやディレクトリはありません gcc: fatal error: no input files compilation terminated. ```
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問