Разработка модуля (.pyd) для Python в свободном паскале довольно проста, см. Developing Python Modules with Pascal. Но если я хочу взаимодействовать с numpy, это не так просто. При использовании C для интерфейса с numpy вам необходимо добавить код #include <numpy/arrayobject.h>
в код, а также вызвать функцию import_array();
в функции инициализации.Python + Numpy модули в свободном паскале
Есть ли способ взаимодействия с numpy в pascal?
EDIT1
Как уже упоминалось в комментариях под @wilberforce ответ, функция import_array
, которая определяется в заголовочных файлах просто импортирует multiarray.pyd модуль в текущий интерпретатор и делает некоторую проверку. Он легко переводится на паскаль, и он работает.
Функции num-C-API вначале не представлены в файле pythonXX.dll, поэтому они не могут быть связаны статически. Статическая или динамическая связь с multarray.pyd не работает для меня.
Итак, обновленный вопрос: есть ли способ получить доступ к функциям C-API, встроенным в multiarray.pyd, из кода, который не является C?
Просто узнал о ключевом слове delphi 'delayed', который позволяет вам загружать функцию из внешней библиотеки по требованию (d2010 +). Он мог бы работать в этой ситуации. Я только на свободном паскале, так что до тех пор, пока он не будет реализован ... – hdrz