Я хочу вызвать библиотеку C из приложения Python. Я не хочу оборачивать весь API, только функции и типы данных, которые относятся к моему случаю. На мой взгляд, у меня есть три варианта:
- Создайте действительный модуль расширения на C. Возможно, это излишне, и я также хотел бы избежать накладных расходов при обучении написанию расширений.
- Используйте Cython , чтобы открыть соответствующие части из библиотеки C для Python.
- Сделайте все это в Python, используя
ctypes
для связи с внешней библиотекой.
Я не уверен, что 2) или 3) - лучший выбор. Преимущество 3) состоит в том, что ctypes
является частью стандартной библиотеки, и полученный код будет представлять собой чистый Python & ndash; хотя я не уверен, насколько велико это преимущество на самом деле.
Есть ли еще преимущества / недостатки при любом выборе? Какой подход вы рекомендуете?
Редактировать: Спасибо за все ваши ответы, они предоставляют хороший ресурс для тех, кто хочет сделать что-то подобное. Решение, конечно же, еще предстоит принять для отдельного случая - нет единственного ответа «Это правильная вещь». Для моего собственного случая я, вероятно, пойду с ctypes, но я также с нетерпением жду возможности попробовать Cython в каком-то другом проекте.
Поскольку единого истинного ответа не существует, принять его несколько произвольно; Я выбрал ответ FogleBird, так как он дает хорошее представление о ctypes, и в настоящее время он также является самым популярным. Тем не менее, я предлагаю прочитать все ответы, чтобы получить хороший обзор.
Еще раз спасибо.