Ошибка при сборке Python биндинга для библиотеки Facebook StarSpace
При сборке Python биндинга крутой библиотеки StarSpace получил такую ошибку:
Traceback (most recent call last):
File "test.py", line 1, in
import starwrap as sw
ImportError: /www/home/mntlp/Starspace/python/test/starwrap.so: undefined symbol: _Py_ZeroStruct
Возникает она потому, что я в данный момент работаю под anaconda, а биндинг собрался под другую версию Python. Пофиксить несложно. Открываем CMakeLists.txt и в начала файла, после строки
project(starspace)
устанавливаем пути к библиотекам и инклудам нужного нам питона:
set(PYTHON_LIBRARY "/home/user/anaconda3/lib")
set(PYTHON_INCLUDE_DIR "/home/user/anaconda3/include/python3.6m/")
А если работаем под виртуальной средой в anaconda, то вместо предыдущих путей нужно указать путь через нее:
set(PYTHON_LIBRARY "/home/user/anaconda3/envs/env_name/lib")
set(PYTHON_INCLUDE_DIR "/home/user/anaconda3/envs/env_name/include/python3.6m")
Дальше:
cd ./build
cmake --build .
cd -
cp ./build/starwrap.so ./test
cd test
python3 test.py
В общем, все как было в build.sh до возникновения ошибки.