Полезные инструменты: virtualenv + pip

Опыт показывает, что каждый проект обладает своими зависимостями (библиотеками), а если и одинаковыми, то версии не совпадают. Чтобы упростить запуск и настройку проекта разработчики пишут INSTALL.md, README.md, make-файлы и что более важно - requirements.txt.

Файл requirements.txt - это правило хорошего тона для Python проектов. Файл содержит список необходимых библиотек для запуска с указанием версий:

# requrements.txt
requests==2 ...
more ...

Полезные инструменты: clonedigger - поиск дубликатов кода

Количество кода - это некоторый критерий для ПО. Практика показывает, что чем больше кода - тем сложнее поддерживать и развивать продукт. А если в этом коде много copy-past'ы, то совсем плохо.

Для выявления повторяющихся кусков кода существуют различные инструменты. Один из них CloneDigger. Это старая разработка (еще в 2008 году автор выступал на EuroPython), однако, работает хорошо и на данный момент ...

more ...

Полезные инструменты: sandman - админка над базой + REST за пару секунд

Сейчас редкий проект обходится без базы данных. Это может быть реляционная БД, или NoSQL, да может просто текстовые файлы. И каждый раз возникает необходимость посмотреть данные в ней, а иногда и другим показать.

В этом случае подойдет инструмент - sandman.

Sandman - позволяет за пару секунд сделать web-интерфейс для популярных БД.

Выполняем команду:

sandmanctl sqlite:////tmp/my_database.db

Получаем

Image

Инструмент почти не ...

more ...

Полезные инструменты: fabric - автоматизируем рутину

Ситуация: написали web-проект, свой, домашний, а может и на работе. Надо его опубликовать в Интернет - задеплоить. Зашли на сервер, активировали venv, скачали новые исходники из репозитория, накатили миграции, обновили static-файлы, перезапустили, предположим, celery, перезапустили uwsgi.

И тут, поняли что забыли раскоментировать строчку в коде. Делаем коммит, снова заходим на сервер, активировали venv.... Зачем вся эта рутина с деплоем? Может есть ...

more ...

Полезные инструменты: tox как средство тестирования

Если вы автор Python-библиотеки, то скорее всего вам необходимо поддерживать несколько версий Python. Стандартный набор - 2.6, 2.7, 3.3, 3.4 и сейчас уже 3.5. Поддерживать несколько версий Python помогают тесты.

Не секрет, что тесты помогают допускать меньше ошибок во время поддержки проекта. Например, вы можете смелее делать рефакторинг и быть уверены, что функционал который проверяют тесты ...

more ...

Полезные инструменты: pythontutor.com

Полезные инструменты: pythontutor.com

Представим ситуацию, вы читаете лекцию, пускай студентам. Хочется все по шагам и подробно рассказать о данном куске кода. Можно вести славеса пол часа, а можно продемонстрировать с помощью http://www.pythontutor.com/

more ...

Полезные инструменты: pylint - в поисках ошибок

Статический анализ кода — анализ кода без реального исполнения кода. Под словом "анализ" можно понимать многое - что код соответствует PEP8, что код безопасный (все типы верно приведены), что код не содержит логических ошибок.

Самым придирчивым анализатором является pylint.

Pylint анализирует исходный код, выводит небольшую статистику по нему и делает около 150 проверок на разного рода ошибки. Все найденные ошибки выводятся в ...

more ...

Полезные инструменты: django-debug-toolbar

Разработка программ сопряжена с сложностями. Произвольно или нет лезут различные баги. Для поиска ошибок применяют различные инструменты, например дебаг. Дебаг бывает кустарным - print'ами, а есть более каноничный подход - дебаггерами.

С десктоп программами все ясно - сиди тыкай точки остановки и изучай состояние программы, а что делать с web?

А делать вот что - ставить debug toolbar: https://github.com/django-debug-toolbar/django-debug-toolbar ...

more ...

Полезные инструменты: pycallgraph

Идеальный программист не пишет тесты, потому что у него не бывает ошибок. А сверх идеальный программист даже код не пишет.

А так как идеальных нет, поэтому бывают медленные куски программы. Точнее как, обычно это называем "тормозит". Чтобы понять какое место тормозит можно воспользоваться модулем pycallgraph - https://github.com/gak/pycallgraph

Данный модуль строит красивые графики-графы, в которых цветом выделяет медленные ...

more ...