Получение distutils для установки готовых скомпилированных библиотек? - PullRequest
9 голосов
/ 16 июня 2009

Я управляю проектом с открытым исходным кодом ( Remix , исходный код доступен там), написанным на python. Мы просим пользователей запустить python setup.py install для установки программного обеспечения. Недавно мы добавили скомпилированный пакет C ++ (порт SoundTouch - перейдите к trunk / externals в исходном коде, чтобы увидеть его.) Мы бы хотели, чтобы файл setup.py, который устанавливает базовые библиотеки Remix, также устанавливал библиотеку pysoundtouch14.

Однако мы не хотим, чтобы пользователи имели в своей системе набор инструментов gcc или msvc. Мы предварительно скомпилировали двоичные файлы для распространенных платформ (linux-i386, windows, mac 10.5 и 10.6), перейдите в trunk / externals / pysoundtouch14 / build, чтобы увидеть их. Я надеялся, что пользователь, у которого не установлены gcc или msvc, может просто запустить файл setup.py для pysoundtouch14, и он обнаружит наличие наших предварительно собранных двоичных файлов и просто скопирует их в нужное место (/Library/Python/2.5/site-packages Например.) Но этого не происходит. Например, в новой системе 10.5 файл setup.py жалуется на то, что gcc не устанавливается, хотя .so, который требуется установить, уже встроен в папку build /.

Итак, у меня есть два прямых вопроса:

  • Как я могу получить файл setup.py для автоматической "установки" предварительно собранных файлов .so и .pyd в нужное место в зависимости от платформы без необходимости сборки системы?
  • Как один файл setup.py (наш основной файл setup.py) также может запустить setup.py другого включенного пакета (pysoundtouch14's setup.py?)

Ответы [ 2 ]

1 голос
/ 17 июня 2009

Ваш первый вопрос сложный, учитывая требования к мультиплатформенности. Если бы это были только окна, вы можете использовать опцию сценария после установки, чтобы запустить сценарий для обработки библиотек, или просто использовать не-python инструмент, такой как NSIS . Я не уверен, что еще можно сделать, кроме предложения Алмада.

По второму вопросу вы, возможно, захотите взглянуть на Paver .

1 голос
/ 17 июня 2009

К сожалению, я бы сказал, что переопределенная команда установки - это путь.

Это можно легко сделать, используя пользовательскую команду распространения. Например, см. [1] http://svn.zope.org/Zope/branches/2.9/setup.py?rev=69978&view=auto

...