2010-01-27 3 views
3

Je souhaite placer une bibliothèque C (pure C c'est-à-dire non C++) existante dans Python afin de pouvoir l'appeler à partir de scripts Python. Quelle approche parmi les différentes disponibles (C Api, SWIG etc.) serait la plus appropriée?Interopérabilité Python C

+0

3 réponses, 3 suggestions différentes. pas exactement ce que vous espériez je devinerais;) –

+2

Suggérer de fermer comme subjectif et argumentatif. Tout ce qui est les meilleures questions sont comme ça. – whatnick

Répondre

7

aller avec Ctypes, cela fait partie de la distribution standard et fonctionne très bien. fondamentalement, vous pouvez envelopper les structures C et les types dans les classes python, ainsi que des fonctions. Certains types et fonctionnalités sont déjà fournis par la bibliothèque.

ctypes

mises en garde couple cependant: passer des pointeurs triples à des routines C est pas évident (si vous devez), et je ne pouvais pas le faire fonctionner avec les bibliothèques statiques sur Linux, DLL et objets partagés sont très bien.

+0

Merci inconnu. Je ne savais même pas que les ctypes existaient. Il semble plus simple à utiliser et pourtant tout aussi efficace que les autres. –

0

Puisque votre code est "pur" C, vous pouvez utiliser Pyrex/Cython. Ce n'est pas un problème de vote et Cython a déjà été mentionné. Je suis juste en train de clarifier pourquoi c'est un meilleur choix pour pur C.