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