J'ai l'impression que cette question fait double emploi, mais je n'en ai pas encore trouvé une sur le sujet (spécifiquement), alors je la pose quand même :
Quelles bibliothèques de liaison Python/C++ recommanderiez-vous et pourquoi ? En outre, quelle a été votre expérience en l'utilisant ou en utilisant toute autre bibliothèque que vous avez essayée ? De plus, quelles fonctions de liaison contiennent-elles et l'utilisation que vous en faites est-elle personnelle ou professionnelle ?
Pour commencer, en voici quelques-unes que j'ai essayées récemment (pour un usage personnel) :
SWIG
- Prise en charge de Python 2 et 3
- Peut être ultra-automatique dans les bonnes circonstances.
- Lorsqu'il n'est pas ultra-automatique, il consiste principalement à répéter vos fichiers .h et à fournir des indications.
- Prise en charge de nombreux autres langages que Python (Java, Ruby, Lua, etc.)
- La sortie consiste en un fichier natif (à compiler dans un .pyd) et un "wrapper" python.
- Les fixations semblent être raisonnablement maigres.
- Ne semble pas supporter les propriétés (valeurs accessibles par getter/setters)
- Très bien documenté, instructions d'installation faciles à suivre.
- Utilisé par Google (hé, ça doit compter pour QUELQUE CHOSE, non ?)
Boost::Python
- Support de Python 2 et 3
- La syntaxe peut s'avérer gênante pour les nouveaux venus, mais elle est simple et peu encombrante.
- Utilisation intensive des templates C++ (peut être une bonne ou une mauvaise chose)
- Distribué en tant que partie de la bibliothèque Boost, qui est énorme. (Utile, mais énorme)
- La compilation initiale de la bibliothèque peut être un exercice de frustration.
- Peut augmenter considérablement les temps de compilation
- Quelques bizarreries, comme la spécification des politiques de valeur de retour pour les fonctions qui renvoient des types natifs.
- Bibliothèque très solide, stable et bien testée
- Prend en charge les propriétés
- La documentation est moyenne. Des tutoriels d'introduction décents, mais l'utilisation plus avancée est quelque peu négligée. La documentation est également fragmentée : Il existe au moins trois tutoriels différents sur la façon de construire la bibliothèque, tous très différents les uns des autres.
- Les fixations ont la réputation d'être quelque peu gonflées.
J'utilise actuellement Boost::Python, principalement parce que j'ai vraiment besoin du support des propriétés, mais je suis très curieux de voir ce que les gens pensent de certaines autres bibliothèques !