Следуя этой рекомендации, я написал собственный C библиотека расширений для оптимизации части модуля Python с помощью ctypes. Я выбрал ctypes вместо написания собственной библиотеки для CPython, потому что это было быстрее и проще (всего несколько функций со всеми жесткими циклами внутри).
Теперь я наткнулся на загвоздку. Если я хочу, чтобы мою работу можно было легко установить с помощью distutils с использованием python setup.py install
, тогда distutils должна иметь возможность собрать мою общую библиотеку и установить ее (предположительно в /usr/lib/myproject
). Однако это не модуль расширения Python, и, насколько я могу судить, distutils не может этого сделать.
Я нашел несколько ссылок на людей, у которых есть эта проблема:
- Кто-то из участников numpy-обсуждения взлома в 2006 году .
- Кто-то спрашивает о distutils-sig и не получает ответа .
- Кто-то спрашивает об основном списке Python и указывает на внутренности существующий проект.
Я знаю, что могу делать что-то родное и не использовать distutils для разделяемой библиотеки или действительно использовать систему упаковки моего дистрибутива. Меня беспокоит, что это ограничит удобство использования, поскольку не каждый сможет легко установить его.
Итак, мой вопрос: каков наилучший в настоящее время способ распространения разделяемой библиотеки с distutils, которая будет использоваться ctypes, но в остальном является родной для ОС, а не модулем расширения Python?
Не стесняйтесь ответить одним из приемов, упомянутых выше, если вы можете расширить его и обосновать, почему это лучший способ. Если нет ничего лучше, то хотя бы вся информация будет в одном месте.