Pyrex — язык программирования для создания модулей Python . Его синтаксис очень близок к Python, и он позволяет программистам Python легко писать код, не поддерживающий Python, для взаимодействия модулей на языке, максимально близком к Python.
Сам Python предоставляет только C API для написания модулей расширения, что позволяет писать функции и типы данных на C. [ обсудить ] Затем к ним можно получить доступ из Python. Можно обернуть функции и типы данных существующих библиотек C как объекты Python и, следовательно, сделать их доступными для Python. [2]
Pyrex позволяет пользователю писать модули расширения на языке, подобном Python, который может напрямую обращаться к внешнему коду C. Сходство синтаксиса Pyrex с синтаксисом Python упрощает написание модулей Python, но существуют некоторые функциональные ограничения. [3] Программист должен указать имена файлов C-заголовков, перечисления , типы данных и функции, к которым необходимо получить доступ в модуле, тогда их можно будет использовать, как если бы они были объектами Python. Компилятор Pyrex автоматически сгенерирует необходимый связующий код и скомпилирует код Pyrex в рабочий модуль Python. [ нужна цитата ]
Существуют такие инструменты, как SWIG или внешняя библиотека функций Python ctypes , которые можно использовать для этой задачи, не требуя большого количества дополнительного кода, но они ограничиваются созданием внешней библиотеки, доступной в коде Python. [4] [5] Если необходимы корректировки API, связующий код снова необходимо написать вручную. [ нужна цитата ]