Распространение общей библиотеки и некоторого кода C с модулем расширения Cython

Я пытаюсь взять некоторые функции из большой общей библиотеки C++ (libbig.so) и предоставить их на Python через Cython. Для этого у меня есть небольшой файл C++ (small.cpp), который обеспечивает тонкую обертку вокруг необходимых мне функций из разделяемой библиотеки таким образом, чтобы его было легко вызывать через Cython (pysmall.pyx).

libbig.so -> small.cpp, small.h -> libsmall.so -> pysmall.pyx -> pysmall.cpp -> pysmall.so

Я могу собрать и запустить этот модуль расширения на своем собственном компьютере : я просто компилирую small.cpp в libsmall.so, а затем говорю «libraries=['small']» в объекте Extension в setup.py для создания модуля расширения pysmall.so.

Сейчас я пытаюсь распространять этот модуль расширения, и мне трудно найти ресурсы, описывающие оптимальные методы setup.py для распространения модуля Cython, а также исходного кода C и общих библиотек. Я прочитал «Установка модулей Python», «Распространение модулей Python» и «Распространение модулей Cython». Я понимаю, как распространять модуль расширения самостоятельно. Я менее уверен в лучшем способе распределения зависимостей модуля расширения.

В документации Cython указано, что вы должны включать сгенерированные файлы .cpp, а также файлы .pyx, если Cython отсутствует, но он не предоставляет код, демонстрирующий, как лучше всего справляться с каждой ситуацией. Также не упоминается, как распространять общие библиотеки, от которых зависит модуль Cython.

Я копаюсь в сценариях setup.py от pandas, lxml, pyzmq, h5py и других, и там происходит довольно много посторонней работы. Если у кого-то есть указатели или пример кода, которые могут ускорить этот процесс, я, безусловно, буду признателен!

33
задан Jeff Hammerbacher 13 June 2012 в 07:33
поделиться