Можно ли предварительно скомпилировать (предварительно собрать/предварительно установить) расширение Python C/C++?

Есть большой проект Python, над которым я работаю с несколькими расширениями C/C++. В настоящее время каждый раз, когда я хочу запустить код на новой машине, мне приходится загружать все из репозитория, а затем запускать python setup.py install несколько раз, по одному разу для каждого расширения... и это при условии, что на компьютере установлен компилятор C-- если это не так, это еще один дополнительный шаг или два.

Есть ли способ, которым я мог бы предварительно скомпилировать все расширения C, чтобы при загрузке репозитория на новую машину все работало прямо из коробки без необходимости отдельной установки всех этих подкомпонентов? Я понимаю, что это может не работать (или не работать вообще?) на разных платформах, но, скажем, я предварительно скомпилировал что-то на 64-битной машине с Windows 8 и хотел установить ее на другую 64-битную машину с Windows 8 — это что возможно? Если да, то как мне это сделать?


person johnny_be    schedule 06.07.2015    source источник
comment
колесо пунктов может делать то, что вы хотите... хотя я сам не пользовался   -  person dan-man    schedule 06.07.2015


Ответы (1)


Это возможно. Вы спрашиваете о создании встроенных дистрибутивов.

Вы можете создать такой встроенный дистрибутив, как:

python setup.py bdist

Вы даже можете выбирать между различными форматами, такими как:

python setup.py bdist --format=wininst
  • zip zip-файл (.zip) [по умолчанию]
  • wininst самораспаковывающийся ZIP-файл для Windows
  • msi Установщик Майкрософт

Все это вы можете сделать с помощью стандартного модуля distutils.

Если вы хотите использовать более современный подход и использовать setuptools, можно создать Колеса платформы для Windows:

python setup.py bdist_wheel

Последнее, что вы можете сделать, это создать файл setup.py для всех ваших расширений вместе. Даже если вы только устанавливаете исходный дистрибутив, вам потребуется гораздо меньше работы. С дистрибутивом сборки это будет только один шаг.

person tynn    schedule 10.07.2015