Eu quero chamar uma biblioteca C de um aplicativo Python. Não quero agrupar a API inteira, apenas as funções e tipos de dados que são relevantes para o meu caso. A meu ver, tenho três opções:
- Crie um módulo de extensão real em C. Provavelmente exagere e eu também gostaria de evitar a sobrecarga de aprender a escrever extensões.
- Use o Cython para expor as partes relevantes da biblioteca C ao Python.
- Faça tudo em Python, usando
ctypes
para se comunicar com a biblioteca externa.
Não tenho certeza se 2) ou 3) é a melhor escolha. A vantagem de 3) é que ctypes
faz parte da biblioteca padrão, e o código resultante seria puro Python - embora eu não tenha certeza do tamanho da vantagem.
Existem mais vantagens / desvantagens em qualquer uma das opções? Qual abordagem você recomenda?
Edit: Obrigado por todas as suas respostas, eles fornecem um bom recurso para quem quer fazer algo semelhante. A decisão, é claro, ainda deve ser tomada para o caso único - não há um tipo de resposta "Esta é a coisa certa". No meu caso, provavelmente vou usar ctypes, mas também estou ansioso para experimentar o Cython em outro projeto.
Como não existe uma única resposta verdadeira, aceitar uma é um tanto arbitrário; Eu escolhi a resposta do FogleBird, pois fornece algumas boas dicas sobre os tipos e, atualmente, também é a resposta mais votada. No entanto, sugiro ler todas as respostas para obter uma boa visão geral.
Obrigado novamente.