К чему всё это?

Возможно не для многих станет откровением тот факт, что операционная система Windows не очень хорошо годиться для разработки на Python, связано это как минимум с тем что не все пакеты “заточены” под архитектуру, а некоторые не очень хорошо живут в виртуальной среде (которая к слову тоже довольно кривая), ко всему вышесказанному можно ещё добавить проблемы с производительностью (были случаи поимки синего экрана). В общем куда не плюнь, а заниматься разработкой на windows просто не серьезно, я уже давно принял для себя эту горькую истину, но что делать если без окон не жить, если помимо работы хочется поиграть или например поработать с софтом от Adobe, или бог весть ещё по каким причинам не хочется менять систему, вот об этом сегодня и пойдёт речь, а именно о моём опыте решения данной задачи.

Среда для интеграции

Сразу оговорю что речь в статье пойдёт именно о PyCharm и конечно же vs code, так-как именно эти IDE я  использую каждый день. Почему выбор пал именно на них, всё очевидно на мой взгляд. Дело в том что например Atome вообще не имеет такого инструментария, и больше сходства имеет например с Sublime Text. Да атом тоже имеет неплохие расширения, и работает быстрее, но это всё равно дело вкуса, на мой взгляд. Лично мне приятнее работать в vs code по причине того что в нём ничего лишнего, а я люблю минимализм.

PyCharm (enterprise)

PyCharm

Начнём разумеется с фаворита который безусловно был слеплен для разработки на python, но стоит сразу упомянуть фундаментальное отличие между vs code, это то что в бесплатной версии pycharm, а именно в community edition, отсутствует возможность работать с WSL и даже SSH не говоря уже докер контейнерах. По этому данное сравнение не совсем честное, потому как реализация данной функции в платной версии есть из коробки, а вот в vs code плагин нужно ставить самому, но зато он на порядок лучше работает и поддерживается самими мелкомягкими. Однако для очень любознательный я всё же оставлю вариант работы и на бесплатной версии.

Преимущества

Разумеется самым главным плюсом в копилку pycharm будет удобство настройки и запуска, всё что нужно это выбрать путь до папки с интерпритатором, при этом это вполне себе может быть папка с виртуальным окружением например, но нужно чётко указывать путь до интерпритатора с указанием его версии естественно. К тому же есть ещё одна опция, это linux distribution на тот случай если в системе стоит не одна конфигурация wsl, что довольно удобно.

Выглядит это вот так:

Недостатки

Увы не обошлось и без них, хотя кому-то они могут показаться скорее придирками, однако лично я так не считаю. Самой критичной проблемой (лично для меня), стало отсутствие интеграции оболочки bash, то при вызове эмулятора терминала с помощью интерфейса самого pycharm я получаю стандартный cmd, который к тому же не подхватит виртуальное окружение (естественно) потому как оно уже будет скорее всего под linux (а иначе не кой херн вам wsl). Но и эта проблема решаема частично, поскольку pycharm весьма гибок, у него есть настройки терминала. Однако всё не так сладко да гладко. Начнём с того что терминал хоть и работает, но заставить его запускаться сразу в venv у меня так и не вышло (а хотелось бы), и второй подводный камень это только одна конфигурация терминала, тогда как вкладок с ним можно открыть кучу.. странное поведение но факт.

wsl pycharm

Заключение

Однозначно можно сказать одно, разработка на python из под windows это плохая идея, но если вы как и я не можете жить без софта adobe то pycharm хорошее решение, однако если ваше путь программиста только начинается, не стоит рассчитывать что будущая компания сможет позволить себе использовать корпоративную версию (потому что она платная, сильно платная), исходя из этого, не стоит привыкать к хорошему, можно ограничиться vs code. Однако если возможность использовать повседневно именно pycharm у вас есть, то безусловно его средств интеграции более чем достаточно, но не забывайте что пиратство это плохо.

VS code (Visual Studio Code)

Visual Studio Code

На мой взгляд данный редактор является своеобразным символом доброй воли от мелкомягких, я никогда не питал особой любви к компании microsoft, хотя всю жизнь почти сижу на окнах). Но это моё лично мнение, которое мало кого должно заботить. В любом случае, люди которые работают над этим бесплатным проектом, настоящие молодицы.  Не только потому что сделали его бесплатным, а потому что Open Source, и это действительно заслуживает уважения. Именно по этому я в данный момент стараюсь отучить себя от Pycharm в пользу vs code. Возможно в обозримом будущем, я смог сам внеси вклад в этот замечательный проект.

Предисловие

На хабре уже есть похожая статья о том как можно писать код на python, с использованием wsl + vs code, однако я свою статью начал писать намного раньше, и цель у неё иная. Смысл моего изложения в том что бы сравнить коммерческий продукт и Open Source, показав что бесплатное не всегда плохо или кастрированно, и что бы повысить интерес к недооцененной vs code.

Преимущества

Про открытость по я уже упомянул выше, но всё же это действительно преимущество, ибо не всех есть деньги на платную версию pycharm, ведь в бесплатной такого функционала не представлена, как впрочем и много другого, которое к слову вполне возможно установить на vs по средствам плагинов. И так с них тогда и начнём. Это основное преимущество VS code по сравнению с PyCharm, ведь во втором почти нет плагинов как таковых, почти всё что нужно есть из коробки (в платной версии). Тогда как code позиционирует себя как мультиязычный редактор кода, и все же назвать его IDE тоже нельзя, потому-что в базовой конфигурации он годиться только как редактор, а интерпретатор или тот же WSL нужно подключать отдельно. Но мы тут всё же говорим не только о плюшках редактора, а рассматриваем преимущества интеграции с WSL, итак она тут просто сказочная.

Конфигурации

В то время как pycharm умеет работать только с каким-то одним конифгом wsl, например с дефолтной убунтой. То vs code умеет работать с любым типом установленного окружения, например с debian или даже cntos. Достаточно указать путь. И в дополнение к этому, мы можем открыть несколько окон программы, которые будут использовать разные типы конфигураций, и таким образом производить тестирования в различных условиях.

Стабильность

Так-как данная интеграция является продуктом самого Microsoft то глупо было-бы предположить что оно будет работает криво или нестабильно. Плагин регулярно обновляется (в отличии от pycharm), и как ещё одна плюшка (весьма удобная нужно отметить), позволят запускать редактор прямо из терминала работы с WSL, то есть внутри той системы которой вам необходимо.

Терминал

Для многих это будет важным плюсом, так-как у pycharm его нет вообще (*то есть он вроде есть, но он корявый), терминал внутри самого редактора. Да-да, я из тех леновых разработчиков которые в падлу открыть новое окно терминала для работы с wsl. Ну согласитесь, зачем вечно дёргать окна когда можно в два клика запустить код в самом редакторе? Тем более когда это можно с помощью привычных инструментов, например zsh.

Минусы

Честно говоря, при эксплуатация я их не обнаружил. Минусы можно отнсети скорее к самой системе lxrun (wsl), она не совершенна, и возможно в новой версии винды она действительно будет круче (wsl2), но пока это всё ещё сырой продукт, и на мой взгляд куда практичнее иметь виртуальную машину с тем же ubuntu server, которая будет возможно не так гибка в плане работе с файлами (можно расширить ей локальный диск если нужно), зато это выделенная среда которую можно конфигурировать по вкусу и оттачивать на ней реальные боевые условия продакшен сервера.

Итоги

Закончить хотелось бы мыслью о том, что wsl подходит для эксперементов с python, и лучше всего он работает в vs code. Но всё же, моя главная мысль была в том, что удобнее и проще использовать ssh в том же vs code, который отлично помогает работать с файлами и даже виртуальным окружением на удалённой машине (или виртуальной). То есть вы получите намного больше полезного опыта, если будите создавать тестовую среду самостоятельно. Кто-то может возразить, мол зачем мне знания о настройки сервера, но в суровой реальности вам могут упасть разные задачи, которые могут быть косвенно связаны с вашей основной работай, так разе не лучше быть готовым к этому, чем потом с жопой в мыле читать гайды?