Получение distutils для установки предварительно скомпилированных библиотек?

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

Тем не менее, мы не хотим, чтобы пользователи должны были иметь gcc или msvc toolchain в своей системе. У нас есть предварительно скомпилированные двоичные файлы для общих платформ (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, которую он должен установить, уже встроен в сборку / папку.

Поэтому у меня есть два прямых вопроса:

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

    2 Solutions collect form web for “Получение distutils для установки предварительно скомпилированных библиотек?”

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

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

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

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

    Python - лучший язык программирования в мире.