我正在尝试编译将军工具箱从源代码...我之前可以编译它,一切正常,但 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 ..
我终于让它工作了。