c++ ubuntu gcc boost boost-python

c++ - Ubuntu-Vinculación de boost.python-Error fatal: no se puede encontrar pyconfig



gcc boost-python (4)

Teniendo algunos problemas, ahora he leído lo siguiente:

hello world python extension en c ++ usando boost?

Intenté instalar boost en mi escritorio y, como lo sugirieron las publicaciones en términos de vinculación. Tengo el siguiente código:

#include <boost/python.hpp> #include <Python.h> using namespace boost::python;

Ahora he intentado enlazar con lo siguiente:

g++ testing.cpp -I /usr/include/python2.7/pyconfig.h -L /usr/include/python2.7/Python.h -lpython2.7

Y he intentado lo siguiente también:

g++ testing.cpp -I /home/username/python/include/ -L /usr/include/python2.7/Python.h -lpython2.7

Sigo recibiendo el siguiente error:

/usr/include/boost/python/detail/wrap_python.hpp:50:23: fatal error: pyconfig.h: No such file or directory # include <pyconfig.h>

No sé dónde me estoy equivocando. Tengo boost.python instalado, ¿hay un problema al vincular?


Acabo de tener el mismo error, el problema es g ++ no puedo encontrar pyconfig.h (impactante, lo sé). Para mí, este archivo se encuentra en /usr/include/python2.7/pyconfig.h por lo que debe -I /usr/include/python2.7/ , como alternativa, puede agregar el directorio a su ruta con:

export CPLUS_INCLUDE_PATH="$CPLUS_INCLUDE_PATH:/usr/include/python2.7/"

También puede agregar esto a su .bashrc y se agregará cada vez que inicie su shell próximamente (tendrá que volver a abrir su terminal para realizar los cambios).

Puede encontrar su propia ruta de acceso de python utilizando find /usr/include -name pyconfig.h , en mi caso esto devuelve:

/usr/include/python2.7/pyconfig.h /usr/include/i386-linux-gnu/python2.7/pyconfig.h


Existen dos posibles causas para este síntoma: 1. no tiene instalado python-dev. 2. tiene python-dev instalado y su ruta de inclusión está configurada incorrectamente, que la publicación anterior proporciona una solución. En mi caso, estaba instalando boost, y está buscando el archivo de encabezado pyconfig.h que falta en mi ubuntu:

La solucion es

apt-get install python-dev

En otros sabores de Linux, debes averiguar cómo instalar el encabezado de Python.


Si tiene un archivo .c ( hello.c ) y desea crear una biblioteca libhello.so , intente:

find /usr/include -name pyconfig.h

[fuera]:

/usr/include/python2.7/pyconfig.h /usr/include/x86_64-linux-gnu/python2.7/pyconfig.h

luego usa la salida y hazlo:

gcc -shared -o libhello.so -fPIC hello.c -I /usr/include/python2.7/

Si está convirtiendo de .pyx de cython a .so, intente con este módulo de python, que automáticamente compilará el archivo .so dado el archivo .pyx:

def pythonizing_cython(pyxfile): import os # Creates ssetup_pyx.py file. setup_py = "/n".join(["from distutils.core import setup", "from Cython.Build import cythonize", "setup(ext_modules = cythonize(''"+/ pyxfile+".pyx''))"]) with open(''setup_pyx.py'', ''w'') as fout: fout.write(setup_py) # Compiles the .c file from .pyx file. os.system(''python setup_pyx.py build_ext --inplace'') # Finds the pyconfig.h file. pyconfig = os.popen(''find /usr/include -name pyconfig.h''/ ).readline().rpartition(''/'')[0] # Builds the .so file. cmd = " ".join(["gcc -shared -o", pyxfile+".so", "-fPIC", pyxfile+".c", "-I", pyconfig]) os.system(cmd) # Removing temporary .c and setup_pyx.py files. os.remove(''setup_pyx.py'') os.remove(pyxfile+''.c'')


Tuve una experiencia similar al generar boost para centos7. No pude encontrar pyconfig.h en mi sistema solamente pyconfig-64.h.

Después de buscar descubrí que necesitas instalar python-devel para obtener pyconfig.h