Является ли Python правильным молотком для этого гвоздя? (построить script)
В настоящее время я использую пакетный файл Windows для создания моего программного обеспечения. Он выполняет такие действия, как запуск MSBuild, копирование файлов, создание ZIP файла, запуск некоторых тестов, в том числе номер версии подвариантности и т.д.
Но проблема в том, что пакетные файлы являются злыми. Поэтому я хотел бы перейти на что-то лучше. Я планировал воссоздать свою сборку script в Python. Это разумный выбор? Как насчет всех этих систем построения, таких как Ant, SCons, Maven, Rake и т.д. Использует ли кто-нибудь из них лучший выбор?
Примечание. Я не планирую заменять файлы решений/проектов Visual Studio. Я хочу только script все, что требуется для создания выпуска моего программного обеспечения.
Изменить: У меня есть веские причины уйти от партии, это не то, о чем мой вопрос. Я хотел бы узнать (например), что дает мне Скинсон, над обычным Python script.
Ответы
Ответ 1
Для инструмента, написанного с помощью Python, мне кажется, что Paver - более гибкий и более гибкий автомат сборки, чем SCons. В отличие от SCons, Paver разработан для множества задач некомпилирующих программ, которые идут вместе с управлением и распространением программного проекта.
Ответ 2
Пакетные файлы не являются злыми - они на самом деле довольно далеко от мозговых мертвых дней command.com. В настоящее время командный язык может быть довольно выразительным, для его изучения требуется просто немного усилий.
Если у вас нет реальной проблемы с вашей сборкой script, которую вы не можете исправить (и, если это так, то вопрос, который вы должны задать, а не какой-нибудь желаемый-стильный "Какая лучшая замена?":), мой подход будет заключаться в том, что у вас есть.
Смутное чувство зла не было бы поводом для меня тратить усилия на "исправление" чего-то, что не сломалось. И это было бы потрачено впустую, если бы не было явного преимущества для изменения ( "меньше зла" - это не то, что я считаю явным преимуществом).
Ответ 3
Как вы уже упоминали Python и SCons, я бы сказал, что отправляйтесь на SCons. В конце концов, это Python. И да, любой из вышеперечисленных вариантов был бы лучшим выбором, чем скрипты сборки вручную.
Ответ 4
Я видел сценарии python, используемые для создания релизов в другом месте, поэтому это не может быть плохо. На самом деле, я лично использовал perl-скрипты для автоматизации выпуска релизов. Я предполагаю, что любой язык сценариев может легко автоматизировать эту процедуру. Если это будет легко сделать (и, вероятно, лучше, чем пакетные скрипты), почему бы не попробовать?
Ответ 5
Я бы предложил использовать NAnt для вашей сборки script вместо python.
Мои причины для этого:
- У него уже определены задачи, все, что вам нужно сделать, это написать XML и указать его в нужные места. Если вы работаете с людьми, которые не знают python, XML может быть немного менее страшным, чем изучение нового языка.
- NAnt предназначен для работы в среде Windows.Net, поэтому он может уже выполнять задачи MSBuild и NUnit.
- Если вы уже пишете на С#, если вам нужно расширить NAnt для выполнения новых задач, вы не добавляете другой язык в микс вашего проекта.
- Вы можете подключиться к Cruise Control. Net (для непрерывных сборок). Которая, по моему мнению, является основной причиной использования NAnt.
Ответ 6
Почему вы должны использовать python? Если ваша сборка script не сломалась, не исправляйте ее. Если у вас возникли проблемы с обновлением, чтобы иметь дело с новыми объявлениями в проекте, тогда вы можете захотеть переписать его. Я бы не использовал Python, хотя такие инструменты, как NANT или MSBuild, выполняют эту работу. Я не вижу смысла использовать общий язык программирования purpis, чтобы сделать то, что инструменты уже были написаны, если у вас нет много неясных требований, с которыми не могут справиться существующие инструменты. Во-вторых, что произойдет, если вас ударят по автобусу или выиграют лото? Если вы настроены на script все, что я использовал бы powershell или некоторые другие специфические технологии Microsoft, так как вы уже привязаны к Microsoft. Если вы оставите, будет ли достаточно программистов на Python для поддержки сценариев сборки?
Ответ 7
Я бы настоятельно предложил взглянуть на waf. Это то, что вы хотите: "основанная на Python среда для настройки, компиляции и установки приложений"
Ответ 8
Лично я использовал бы скрипты в качестве последнего средства, учитывая, что
- С небольшой работой вы можете заставить MSBuild делать все это для вас, расширив ее с помощью дополнительных компонентов.
- Существуют сторонние эквиваленты MSBuild, такие как NANT, которые могут делать то же самое
- Есть целые инструменты, такие как FinalBuilder, которые также делают то же самое, и их легче настроить и расширить
Однако, если бы мне пришлось идти по сценарию, я бы использовал Powershell по нескольким причинам:
- Полный доступ к файловой системе
- Вы можете легко получить доступ к объектам .NET
- Вы можете легко получить доступ к COM-объектам
Ответ 9
Вы можете создать настраиваемые make файлы для инструмента Microsoft nmake, который вы уже установили. Использование такого инструмента (SCons, Maven и т.д. Относится к одной категории) дает вам гораздо больше, чем обычные скрипты.
Основное преимущество заключается в том, что отслеживаются зависимости между файлами, а также временные метки изменений. Например, вы можете сделать ваш .zip файл зависимым от некоторых других файлов, поэтому .zip только переупаковывается, если некоторые из этих файлов изменились за это время. Как и исходный код и его скомпилированная форма.
Ответ 10
Python очень портативен. SCons полевые и надежные. Учитывая то, что вы знаете (из того, что вы объяснили), почему бы даже задать вопрос?
Если вы поддерживаете что-то, а не только о том, как его построить, то и о том, чтобы объяснить пользователю, почему он НЕ МОЖЕТ строить, что избавляет вас от множества очень неприятных вопросов, помогая пользователям самим помогать.
Я не могу придумать современную производственную операционную систему, которой не хватает Python, если вы не попадете во встроенную/исследовательскую арену.
Итак, я отвечаю, чтобы сказать, что вы ответили на свой вопрос:)
Ответ 11
Это зависит от того, какую технологию использует ваше программное обеспечение. Если вы строите программы на С++, я бы, вероятно, сказал, что вы можете пойти на scons без вопросов (если у вас нет странных требований, которые не могут удовлетворить счёты). С другой стороны, рассмотрите инструкции по построению С#: CSharpBuilder.
Я хотел бы узнать (например), что скажет Сконс, над обычным Python script.
Подумайте о том, что scons - это скорее библиотека, чем программа. Он предоставляет вам код, который предотвратит много скуки, с которыми вам придется иметь дело без него. На мой взгляд, vanilla Python не самый лучший вариант для любого типа файлов сценариев оболочки (не для того, чтобы он не мог этого сделать).
Но проблема в том, что пакетные файлы являются злыми.
Наконец, пакетные файлы являются злыми, если они используются для проекта, который они не подходят для обработки. Для одного или двух файловых проектов пакетные файлы прекрасно подходят.
Ответ 12
Он выполняет такие действия, как запуск MSBuild, копирование файлов, создание ZIP файла, запуск некоторых тестов, включая номер ревизии subversion и т.д.
MSBuild и PowerShell могут легко выполнить все это с достаточно чистым кратким кодом. Затем вы придерживаетесь исключительно продуктов M $, которым, как правило, нравятся менеджеры. В противном случае я бы посоветовал вам взглянуть на Рейка, если не только для своего большого сообщества. Он имеет хороший синтаксис и поддержку рубинового железа (irake).
Чтобы быть честным, все, кроме последней заданной вами задачи, легко выполнено только в MSBuild. Я бы предложил изучить инструменты, которые у вас есть, прежде чем отправиться в другое место.
Отметьте http://msbuildtasks.tigris.org/ для некоторых хороших дополнений к MSBuild