Инструменты управления проектом / сборки для проекта Django?
Исходя из Java-разработки, где есть много инструментов для сборки и управления проектами, я хотел бы знать, что доступно для Django. Я действительно хотел бы использовать что-то вроде Maven для создания вещей, но есть ли другой предпочтительный способ сделать это?
Я действительно ищу следующее:
- Здание командной строки:
mvn install
это так просто и круто. - Тестовые запуски командной строки. Я хотел бы интегрировать это приложение в нечто вроде Hudson для непрерывной интеграции, так как я хардкорный, как это.
- Развертывание медиа на локальном тестовом сервере (JS, CSS, изображения и т. Д.)
Возможно ли это в настоящее время с Maven или другим инструментом? Я начинаю довольно крупный проект, и мне бы хотелось иметь систему управления сборкой / проектом Kicking-Rad, такую как Maven, чтобы помочь проекту расти со временем.
2 ответа
На ум приходят два инструмента, оба являются общими инструментами Python - им не нужно специально работать с Django:
- Ткань. Мы используем это; это позволяет нам писать удаленные команды, как если бы мы были в SSH, загружать код и т. д. Это не то, что вы не можете сделать, и, поскольку это по сути сценарий bash, написанный на python, очень легко приступить к работе. Но это также bash-скрипт, написанный на python, что означает, что вы можете импортировать части вашего приложения django, запускать тесты или делать все, что python может сделать в процессе запуска вашего развертывания.
- Buildout. Я не использовал это, но наш постоянный разработчик Django говорит мне, что это абсолютно инструмент для использования. По-видимому, это либо та же идея, либо чуть более абстрактный, более ориентированный на питон эквивалент.
Я уверен, что есть другие доступные пакеты. Лучший совет, который я могу вам дать, - это кратко оценить их и выбрать тот, который наилучшим образом соответствует вашему сценарию / стилю работы в команде. Обратите внимание, что в основном это инструменты развертывания - сборки на python на самом деле не имеют смысла, так как вы не компилируете код на python.
С точки зрения CI, есть три команды от django, о которых вам нужно знать:
./manage.py test
запускает ваши тесты со всехtests.py
файлы. В основном это специфичные для django улучшенияunittest
пакет python../manage.py collectstatic
собирает статические файлы в каталог по вашему выбору; очень полезно для объединения всех кусочков, чтобы существовать на статическом медиа-сервере. Посмотрите на статические файлы, как это работает.- Тебе нужен Юг для этого,
./manage.py schemamigration app --auto && ./manage.py migrate app
- это применяет изменения модели к базовой схеме sql. По сути, если вы просто измените модель и не будете использовать юг, Django очень расстроится, потому что новое поле не будет соответствовать старой схеме sql и не сможет сохранить вашу модель. Миграции схемы, поддерживаемые югом, позволяют обновить существующую заполненную базу данных. Стоит делать вручную перед автоматизацией. - Я также должен отметить, что вы можете написать собственные команды управления для выполнения
./manage.py whatever you like
, Это имеет значительный потенциал - например, я использовал команды управления в качестве команды для выполнения в задании cron. Вы также можете создавать интерактивные команды для администраторов вашего приложения и, конечно же, развертывания и тестирования.
Как они обрабатываются, зависит от того, какие настройки у вас есть и какие инструменты вы выберете.
При компиляции: самое близкое к построению с помощью python - это freeze, aka py2exe или cxfreeze, которые создают двоичные файлы. Имейте в виду, что все, что они делают - это сохраняют байт-код python в exe и пропускают его через интерпретатор, который в любом случае является общим объектом. Кроме того, вы не можете cxfreeze для приложения django, так как сам django использует динамический импорт, который происходит во время выполнения и поэтому не может быть оценен с помощью cxfreeze, который по сути является инструментом времени компиляции. Так что дисконтное строительство как задача, которую нужно выполнить. Вы можете увидеть .pyc
файлы, появляющиеся в вашем каталоге - python преобразует ваш скрипт python в байт-код python, если в него были внесены изменения с момента последнего pyc. Если никаких изменений не было сделано, он загружает pyc
файл с прошлого раза. Байт-код Python - это то, что исполняется, так что это не ускорение с точки зрения производительности, просто время загрузки.
Если вам нужно что-то, чтобы управлять и воспроизводить вашу (Django) среду Python, тогда я бы рекомендовал рассматривать pip с virtualenv в качестве альтернативы Buildout.
Эта статья о SaltyCrane описывает использование pip с Django. В статье описывается процесс в Ubuntu, но мы используем аналогичную настройку как в Ubuntu, так и в OSX.
Мы имеем опыт работы как со сборкой, так и с пипсами, и обнаружили, что пипы проще, надежнее и легче масштабируются, чем сборка.