#環境
- os: WIndows 10 Pro
- Shell: PowerShell
- python interpriter: Python3.8 PATH:C:/AppData/msys2/mingw64/bin/python.exe
- c++ compiler:msys2の上でのmingw64 PATH:C:/AppData/msys2/mingw64/bin/g++.exe
- make : GNU Make 4.3
- cmake : version 3.19.1
#問題
Main.ccをCMakeFileListsにのっとってMakeFileを作ってmakeでコンパイルすると、
コンパイルには成功するが、実行時に以下のエラーが出る。
Main.ccでインクルードしてる、matplotlibcppってヘッダーファイルの中でPython.hや、numpyのAPIなどを使っている。
ERROR
1Could not find platform independent libraries <prefix> 2Could not find platform dependent libraries <exec_prefix> 3Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>] 4Python path configuration: 5 PYTHONHOME = (not set) 6 PYTHONPATH = (not set) 7 program name = 'plotting' 8 isolated = 0 9 environment = 1 10 user site = 1 11 import site = 1 12 sys._base_executable = 'C:\Users\hideki\Documents\LatexWorkspace\math-tech-experiment-7\source\kadai1\build\Main.exe' 13 sys.base_prefix = 'D:\a\_temp\msys\msys64\mingw64' 14 sys.base_exec_prefix = 'D:\a\_temp\msys\msys64\mingw64' 15 sys.executable = 'C:\Users\hideki\Documents\LatexWorkspace\math-tech-experiment-7\source\kadai1\build\Main.exe' 16 sys.prefix = 'D:\a\_temp\msys\msys64\mingw64' 17 sys.path = [ 18 'D:\a\_temp\msys\msys64\mingw64\lib\python38.zip', 19 'D:\a\_temp\msys\msys64\mingw64\lib\python3.8', 20 'D:\a\_temp\msys\msys64\mingw64\lib\python3.8', 21 'D:\a\_temp\msys\msys64\mingw64\lib\lib-dynload', 22 ] 23Fatal Python error: init_fs_encoding: failed to get the Python codec of the filesystem encoding 24Python runtime state: core initialized 25ModuleNotFoundError: No module named 'encodings' 26 27Current thread 0x0000035c (most recent call first): 28<no Python frame>
c++
1 2#include<stdio.h> 3#include<stdlib.h> 4#include<math.h> 5#include<vector> 6#include<iostream> 7 8#include"matplotlibcpp.h" 9 10#define rep(i, n) for (int i = 0; i < (int)(n); i++) 11#define rep1(i, n) for (int i = 1; i <= (int)(n); i++) 12 13using namespace std; 14namespace plt=matplotlibcpp; 15 16int main(){ 17 cout<<"ahoahoaho"<<endl; 18 19 plt::plot({1,2,4,8,16}); 20 plt::show(); 21}
CMakeLists
1cmake_minimum_required(VERSION 3.14) 2project(Main) 3 4set(CMAKE_CXX_STANDARD 11) 5 6add_executable(Main a-res.cc) 7 8# matplotlibcppで使うPythonとNumpyを探す 9find_package(Python3 COMPONENTS Development NumPy) 10target_include_directories(Main PRIVATE ${Python3_INCLUDE_DIRS} ${Python3_NumPy_INCLUDE_DIRS}) 11target_link_libraries(Main Python3::Python Python3::NumPy)
#いろいろな情報
必要であれば開示します。解決したいのでなんでも助言してください。
-
PYTHONHOMEについてはWIndowsのシステム環境変数で定義したが変わらない。。
-
CMakeCache.txt の中ではPythonのライブラリへのパスや、pythonのインタプリタへのパス、NumpyのAPIへのパス等々正確な値がとれているのを確認した。
`make --debug=v'での結果は以下です。省略しましたが、numpyのAPIなどの存在を全部確認しているようです。
debug
1GNU Make 4.3 2このプログラムは x86_64-pc-msys 用にビルドされました 3Copyright (C) 1988-2020 Free Software Foundation, Inc. 4ライセンス GPLv3+: GNU GPL バージョン 3 以降 <http://gnu.org/licenses/gpl.html> 5これはフリーソフトウェアです: 自由に変更および配布できます. 6法律の許す限り、 無保証 です. 7makefile を読み込みます... 8makefile 'Makefile' の読み込み中... 9makefile の更新中.... 10最終ターゲットを更新中.... 11ファイル 'default_target' を検討しています. 12 ファイル 'default_target' が存在しません. 13 ファイル 'all' を検討しています. 14 ファイル 'all' が存在しません. 15 ファイル 'cmake_check_build_system' を検討しています. 16 ファイル 'cmake_check_build_system' が存在しません. 17 ターゲットファイル 'cmake_check_build_system' の必要条件を満たしました. 18 ターゲット 'cmake_check_build_system' を再make する必要があります. 19 ターゲットファイル 'cmake_check_build_system' の再 make に成功しました. 20 ターゲットファイル 'all' の必要条件を満たしました. 21 ターゲット 'all' を再make する必要があります. 22GNU Make 4.3 23このプログラムは x86_64-pc-msys 用にビルドされました 24Copyright (C) 1988-2020 Free Software Foundation, Inc. 25ライセンス GPLv3+: GNU GPL バージョン 3 以降 <http://gnu.org/licenses/gpl.html> 26これはフリーソフトウェアです: 自由に変更および配布できます. 27法律の許す限り、 無保証 です. 28makefile を読み込みます... 29makefile 'CMakeFiles/Makefile2' の読み込み中... 30makefile の更新中.... 31最終ターゲットを更新中.... 32ファイル 'all' を検討しています. 33 ファイル 'all' が存在しません. 34 ファイル 'CMakeFiles/Main.dir/all' を検討しています. 35 ファイル 'CMakeFiles/Main.dir/all' が存在しません. 36 ターゲットファイル 'CMakeFiles/Main.dir/all' の必要条件を満たしました. 37 ターゲット 'CMakeFiles/Main.dir/all' を再make する必要があります. 38GNU Make 4.3 39このプログラムは x86_64-pc-msys 用にビルドされました 40Copyright (C) 1988-2020 Free Software Foundation, Inc. 41ライセンス GPLv3+: GNU GPL バージョン 3 以降 <http://gnu.org/licenses/gpl.html> 42これはフリーソフトウェアです: 自由に変更および配布できます. 43法律の許す限り、 無保証 です. 44makefile を読み込みます... 45makefile 'CMakeFiles/Main.dir/build.make' の読み込み中... 46makefile 'CMakeFiles/Main.dir/depend.make' の読み込み中 (探索パス) (~ の展開なし)... 47makefile 'CMakeFiles/Main.dir/progress.make' の読み込み中 (探索パス) (~ の展開なし)... 48makefile 'CMakeFiles/Main.dir/flags.make' の読み込み中 (探索パス) (~ の展開なし)... 49makefile の更新中.... 50最終ターゲットを更新中.... 51ファイル 'CMakeFiles/Main.dir/depend' を検討しています. 52 ファイル 'CMakeFiles/Main.dir/depend' が存在しません. 53 ターゲットファイル 'CMakeFiles/Main.dir/depend' の必要条件を満たしました. 54ターゲット 'CMakeFiles/Main.dir/depend' を再make する必要があります. 55ターゲットファイル 'CMakeFiles/Main.dir/depend' の再 make に成功しました. 56GNU Make 4.3 57このプログラムは x86_64-pc-msys 用にビルドされました 58Copyright (C) 1988-2020 Free Software Foundation, Inc. 59ライセンス GPLv3+: GNU GPL バージョン 3 以降 <http://gnu.org/licenses/gpl.html> 60これはフリーソフトウェアです: 自由に変更および配布できます. 61法律の許す限り、 無保証 です. 62makefile を読み込みます... 63makefile 'CMakeFiles/Main.dir/build.make' の読み込み中... 64makefile 'CMakeFiles/Main.dir/depend.make' の読み込み中 (探索パス) (~ の展開なし)... 65makefile 'CMakeFiles/Main.dir/progress.make' の読み込み中 (探索パス) (~ の展開なし)... 66makefile 'CMakeFiles/Main.dir/flags.make' の読み込み中 (探索パス) (~ の展開なし)... 67makefile の更新中.... 68最終ターゲットを更新中.... 69ファイル 'CMakeFiles/Main.dir/build' を検討しています. 70 ファイル 'CMakeFiles/Main.dir/build' が存在しません. 71 ファイル 'Main.exe' を検討しています. 72 ファイル 'Main.exe' が存在しません. 73 ファイル 'C:/AppData/msys2/mingw64/lib/libpython3.8.dll.a' を検討しています. 74 ターゲットファイル 'C:/AppData/msys2/mingw64/lib/libpython3.8.dll.a' の必要条件を満たしました. 75 ターゲット 'C:/AppData/msys2/mingw64/lib/libpython3.8.dll.a' を再make する必要はありません. 76 ファイル 'CMakeFiles/Main.dir/a-res.cc.obj' を検討しています. 77 ファイル '../a-res.cc' を検討しています. 78 ターゲットファイル '../a-res.cc' の必要条件を満たしました. 79 ターゲット '../a-res.cc' を再make する必要はありません. 80 ファイル 'C:/AppData/msys2/mingw64/include/python3.8/Python.h' を検討しています. 81 ターゲットファイル 'C:/AppData/msys2/mingw64/include/python3.8/Python.h' の必要条件を満たしました. 82 ターゲット 'C:/AppData/msys2/mingw64/include/python3.8/Python.h' を再make する必要はありません. 83 。。。(省略)
回答1件
あなたの回答
tips
プレビュー