-- 找到 PythonLibs:/usr/lib/x86_64-linux-gnu/libpython3.6m.so(需要精确版本“3.6.3”)

-- 找到 PythonLibs:/usr/lib/x86_64-linux-gnu/libpython3.6m.so(需要精确版本“3.6.3”)

我正在尝试编译将军工具箱从源代码...我之前可以编译它,一切正常,但 cmake 检测 python 2.7 为默认(因为 Ubuntu 确实如此)并且我无法在 python3.6 中使用该库

正如我之前放在的链接中所说,为了编译 shogun 以便在 python 3 中使用,我必须以这种方式使用 cmake 指定我正在使用 python 3:

cmake -DPYTHON_INCLUDE_DIR=/usr/include/python3.3 -DPYTHON_EXECUTABLE:FILEPATH=/usr/bin/python3 -DPYTHON_PACKAGES_PATH=/usr/local/lib/python3.3/dist-packages -DPythonModular=ON ..

但是,然后我这样做,在 cmake 输出中得到了这个:

Found PythonLibs: /usr/lib/x86_64-linux-gnu/libpython3.6m.so (Required is exact version "3.6.3") 

而我应该得到类似这样的结果(使用 python2 时我会得到什么):

-- Found PythonLibs: /usr/lib/x86_64-linux-gnu/libpython2.7.so (found suitable exact version "2.7.14")

我想也许我没有完全安装 libpython 3.6.3,但是当我执行

sudo apt-get install libpython3.6

我得到这个输出:

libpython3.6 is already the newest version (3.6.3-1ubuntu1).

升级了 0 个,新安装了 0 个,删除了 0 个,并且未升级 10 个。

如果我尝试在不解决此问题的情况下制作 shogun,我会得到:

[ 54%] Building CXX object src/interfaces/python/CMakeFiles/_interface_python.dir/shogunPYTHON_wrap.cxx.o
/home/grg121/code/shogun/build/src/interfaces/python

/shogunPYTHON_wrap.cxx:175:11: fatal error: Python.h: No such file or directory
 # include <Python.h>

       ^~~~~~~~~~
compilation terminated.
src/interfaces/python/CMakeFiles/_interface_python.dir/build.make:73: recipe for target 'src/interfaces/python/CMakeFiles/_interface_python.dir/shogunPYTHON_wrap.cxx.o' failed
make[2]: *** [src/interfaces/python/CMakeFiles/_interface_python.dir/shogunPYTHON_wrap.cxx.o] Error 1
CMakeFiles/Makefile2:1219: recipe for target 'src/interfaces/python/CMakeFiles/_interface_python.dir/all' failed
make[1]: *** [src/interfaces/python/CMakeFiles/_interface_python.dir/all] Error 2
Makefile:162: recipe for target 'all' failed
make: *** [all] Error 2

找不到 Python.h,但是...如果我执行

locate Python.h

我得到:

/usr/include/python2.7/Python.h
/usr/include/python3.6m/Python.h

我正在使用以下命令执行 cmake:

cmake -DINTERFACE_PYTHON=ON BUILD_META_EXAMPLES=ON -DENABLE_TESTING=ON -DCMAKE_BUILD_TYPE=Debug -DBUILD_DASHBOARD_REPORTS=ON -DPYTHON_EXECUTABLE=/usr/bin/python3.6 -DPYTHON_INCLUDE_DIR=/usr/include/Python3.6m -DPYTHON_PACKAGES_PATH=/usr/local/lib/python3.6/dist-packages ..

所以......我不明白发生了什么。

有人知道发生了什么吗?

太感谢了!

答案1

好的。我已让它工作了……

重读后该自述文件我发现我没有把“PA”放在DPYTHON_EXECUTABLE中

我不确定为什么这样做会有效,但是,以这种方式执行 cmake:

cmake -DINTERFACE_PYTHON=ON BUILD_META_EXAMPLES=ON -DENABLE_TESTING=ON -DCMAKE_BUILD_TYPE=Debug -DBUILD_DASHBOARD_REPORTS=ON DPYTHON_INCLUDE_DIR=/usr/include/python3.6m -DPYTHON_EXECUTABLE:FILEPATH=/usr/bin/python3.6 -DPYTHON_PACKAGES_PATH=/usr/local/lib/python3.6/dist-packages ..

我终于让它工作了。

相关内容