[Python] Integrare Python in C++

Marco Giusti marco.giusti a posteo.de
Mer 27 Maggio 2015 11:03:41 CEST


On Wed, May 27 2015, Marco De Paoli wrote:
> Il 27 maggio 2015 09:11, Marco Giusti <marco.giusti a posteo.de> ha scritto:
> >
> > Salve,
> >
> > avete esperienza a proposito in ambiente Windows? Quale è la strada
> > consigliata? Ho visto che boost.python può essere una soluzione ma prima
> > di gettarmi a capofitto sulla documentazione vorrei il vostro parere.
> 
> con boost::python avevamo fatto belle cose alcuni anni fa su Visual Studio 2008
> della serie che puoi fare cose abbastanza magiche
> (es. definire una classe in C++ e derivarla in python chiamando i
> metodi della classe base)
> 
> metti in conto:
> a) alti tempi di compilazione
> b) saper mettere più o meno le mani sulle magie del template
> metaprogramming tipiche di boost
> c) in caso di errori di compilazione ricevere messaggi infiniti (come
> è tipico del template metaprogramming)
> 
> per il punto 2 dipende poi quanto ti vuoi spingere... 
> se ti basta esporre qualche funzione C++ e poterla chimare da python è un conto
> se invece vuoi inserirti, da python, nel sistema delle classi che hai
> definito in C++ e derivare, ridefinire operatori, fare overload di
> funzioni etc. etc. beh, diventa un'altra storia
> 
> (...in particolare a proposito dell'overload: ecco un punto in cui
> puoi avere qualche rogna perchè python non lo permette...)
> 
> e comunque, rispetto a quando ci ho lavorato io con boost::python
> - il C++ è andato avanti, e non poco (C++ 11 e C++ 14)
> - boost è andato avanti anche lui (noi avevamo usato tipo boost 1.42)
> 
> per cui oggi come oggi, se dovessi averne bisogno sarei il primo a
> dover rifare un check sullo stato attuale di boost::python

In realtà la mia è solo un'idea e non so' quanto andrà avanti e come si
svilupperà. Mi piacerebbe poter integrare Python per poter sviluppare
delle estenzioni al programma in Python stesso, ma vista la
mia esperienza con C++ vorrei iniziare con qualcosa di semplice come
wrappare quanto c'è per scrivere i vari test in Python.

In realtà è questa doppia personalità, embedding vs. extending, che mi
lascia perplesso. Posso partire da una prima fase, extending, dove
da Python eseguo i vari test richiamando funzioni e quant'altro, per poi
passare ad una fase di embedding, dove i vari plugin scritti in Python
sono integrati nel programma, senza però perdere quanto fatto in
precedenza?

Per il punto 2, qual'è il santo a cui devo rimettermi? :)


Maggiori informazioni sulla lista Python