PyCharm
В своей работе я использую PyCharm — отличную среду разработки, которая много всего умеет, упрощает рутину(чем сильно повышает продуктивность разработчика) и вообще не заменима для Django-devелоперов.
В настоящий момент я работаю над проектом, который по ряду причин, не могу запустить на своей машине. Обновленный код приходится закачивать на сервер, перезапускать проект и только тогда я увижу как оно работает. Терять в удобстве разработки и отладки мне не хотелось. Поэтому пришел к использованию следующей связки инстурментов:
- На рабочей машине(Mac) разрабатываю под PyCharm
- В PyCharm как правило постоянно включена удаленная отладка.
- Для работы удаленной отладки в код проекта, необходимо внести 2 строки кода для запуска отладки и положить 1 файл, доступный в python-path.
- После внесения изменений в код, я на рабочей машине запускаю скрипт, который закачиваюет изменения на сервер с помощью rsync и перезагружает сервер проекта.
Про настройку удаленной отладки в PyCharm
В директорию проекта нужно положить файл из директории PyCharm под названием: pycharm-debug.egg. В Django-проекте я нахожу то место, которое мне нужно отладить и в начале отлаживамого def’а(например) ставлю следующий код:
sys.path.append(‘/home/webmail/src/pycharm-debug.egg’) from pydev import pydevd pydevd.settrace(’213.180.204.11′, port=32456, stdoutToServer=True, stderrToServer=True)IP адрес и порт – это те по которым внешний сервер будет стучаться для того, чтобы найти запущенный PyCharm, которому он выдаваст отладочную информацию. Адрес Необходимо, настроить NAT, чтобы такие запросы попадали на машину разработчика.
Так как я на сервере не использую Django Development Server, а вместо него — nginx+uwsgi, то в параметрах запуска uwsgi я указал 1 процесс. Иначе будут сложности с отладкой, из-за нескольких попыток подключиться к моему компьютеру.
Важно! Для удаленной отладки исходные коды должны быть идентичны на локальном и удаленном сервере, в противном случае, может проявиться странное поведение дебаггера.
Первые пол дня я использовал CyberDuck для закачивания обновленных файлов на сервер. Но мне это быстро надоело. И родилось решение, котором расскажет следующая часть этой статьи: про rsync.