- Encontrado PythonLibs: /usr/lib/x86_64-linux-gnu/libpython3.6m.so (Requerido é a versão exata “3.6.3”)

0

Estou tentando compilar Shogun-toolbox da fonte ... Eu poderia compilá-lo antes , tudo bem, mas cmake detecta python 2.7 como padrão (porque o Ubuntu faz) e eu não posso usar essa biblioteca em python3.6

Como dito no link que eu coloquei antes, a fim de compilar o shogun para ser usado no python 3 eu tenho que especificar que eu estou usando o python 3 usando o cmake dessa maneira:

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 ..

Mas, então, eu consegui isso na saída do cmake:

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

enquanto eu deveria ter algo parecido com isto (o que eu obtenho ao usar o python2):

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

Eu pensei que talvez eu não tenha exatamente o libpython 3.6.3 instalado mas, quando eu executo

sudo apt-get install libpython3.6

Eu recebo esta saída:

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

0 atualizado, 0 recém-instalado, 0 para remover e 10 não atualizado.

Se eu tentar fazer shogun sem resolver esse problema, recebo:

[ 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 não é encontrado, mas ... Se eu executar

locate Python.h

Eu recebo:

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

E eu estou executando cmake com:

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 ..

Então ... não consigo entender o que acontece.

Alguém tem uma ideia do que acontece?

Muito obrigado!

    
por grg121 03.02.2018 / 19:22

1 resposta

0

OK. Eu fiz isso funcionar ....

Depois de re_reading readme , vi que não estava colocando "PA em DPYTHON_EXECUTABLE

Não sei por que funciona se fizer isso, mas executando o cmake desta maneira:

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 ..

Eu finalmente consegui trabalhar.

    
por grg121 03.02.2018 / 21:00