Как вы компилируете расширения Python C / C ++ для разных ОС / версий Python? - PullRequest
8 голосов
/ 04 января 2012

Я заметил, что несколько зрелых библиотек Python имеют предварительно скомпилированные версии для большинства архитектур (Win32 / Win-amd64 / MacOS) и версий Python. Каков стандартный способ кросс-компиляции ваших расширений для разных сред? Вино? Виртуальные машины? Краудсорсинг?

Ответы [ 3 ]

7 голосов
/ 13 апреля 2012

Мы используем виртуальные машины и сервер Hudson .

У нас есть виртуальная машина для каждой поддерживаемой архитектуры (обычно компиляция не увеличивает ресурсы, выделенные для них, поэтому с виртуальной машиной все в порядке). Я предполагаю, что конфигурация каждой виртуальной машины может управляться чем-то вроде Puppet или Chef, чтобы обеспечить подходящую среду сборки. Конечно, вы могли бы использовать реальные машины, если у вас есть оборудование, но вы хотели бы избежать использования машин, которые фактически используют люди (например, рабочие станции разработчиков).

Затем мы используем мультиконфигурационный проект в Хадсоне для настройки матрицы сборки. Матрица сборки позволяет нам (одним щелчком мыши) создавать несколько версий Python на нескольких архитектурах, но теоретически вы можете создать любую комбинацию, которую вы можете настроить в своей матрице. Конечно, вы могли бы использовать Дженкинс вместо этого.

0 голосов
/ 11 апреля 2012

Все мои модули расширения Python - C ++, а не C, поэтому я использую boost Python.Я также использую виртуальные машины, когда мне нужно поддерживать разные операционные системы.Драйвер сборки Boost bjam позволяет собирать с разными версиями Python (2.6, 2.7) разные версии g ++ и различные другие вещи.Если бы у меня был модуль расширения, который был очень популярен, и многие хотели использовать его на платформах, которых у меня нет, я бы просто позаботился о том, чтобы мой код был очень переносимым (так или иначе), и дал бы инструкции о том, как его собратьс bjam, используя несколько разных примеров для разных версий Python и т. д. Этого было бы достаточно, чтобы начать их.Если это сработает, вы можете попросить их предоставить свои сборки, чтобы другие могли их использовать (конечно, без поддержки).

0 голосов
/ 09 января 2012

SWIG предоставляет путь для генерации многоплатформенного кода.

...