Установить скрипт для C проекта с Python API - PullRequest
4 голосов
/ 19 апреля 2011

У меня есть проект, который в основном написан на C, но у него также есть Python API, который использует модули расширения Python, написанные на C.

Каков наилучший способ написания сценариев установки / развертывания для Linux/ Среда UNIX?Обычно я использую утилиту make для компиляции и установки проектов, написанных на C. Большую часть времени я просто использую утилиту make, которая компилирует весь исходный код в исполняемые файлы, а затем копирует исполняемые файлы в /usr/local/bin.

Однако мой Python API требует компиляции / установки файлов общей библиотеки (.so) для использования с Python.Это в основном включает в себя компиляцию необходимых файлов C, а затем копирование общих библиотек в некоторый каталог, который является частью Python sys.path, например /usr/local/lib/pythonX.X/dist-packages/.

Но как подобрать соответствующий каталог для модулей расширения Pythonбыть обнаруженным утилитой Make?Есть ли переменная окружения или что-то, что перечисляет каталоги в Python sys.path?

Ответы [ 2 ]

1 голос
/ 20 апреля 2011

Если по какой-то причине вы не можете использовать distutils в python, вы можете попробовать некоторые эвристики в оболочке:

INSTALL_PATH=$(python -c 'import sys; print [ i for i in sys.path if i.endswith("-packages") ][0]')

проверено на:

  • RHEL5: /usr/lib64/python2.4/site-packages
  • Debian: /usr/local/lib/python2.6/dist-packages
  • Solaris: /usr/local/lib/python2.6/site-packages
0 голосов
/ 20 апреля 2011

Я бы разделил проект на две части. Ваша часть C может использовать make как обычно. Ваш модуль python может использовать инструменты установки python, которые способны создавать расширения.

(Вы также можете написать цели установки, поэтому вам не нужно копировать вещи вручную)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...