Microsoft… Технологических локомотивов нашего времени. Ни для кого не секрет что они крутые, а также, что они поглощают все больше и больше…
Для разработчиков ПО они так же не скупятся. C#, Azure, Visual Studio… Но сейчас пойдет речь о Python, ведь для него местечко здесь тоже пригрели.
Кратко о WSL
С обновлением Windows появилась возможность использовать такую штуку, как WSL (Windows Subsystem for Linux). Не так давно появилась WSL2 с ОЧЕНЬ крутыми доработками. WSL2 использует новейшую и самую новую технологию виртуализации для запуска ядра Linux внутри упрощенной служебной виртуальной машины. Это значит, что такие атрибуты, как изоляция и замедление работы здесь отсутствуют.
Linux или Linux
Рано или поздно разработчик принимает решение в какой среде разрабатывать, а это, как ни как, очень и очень важный момент. Довольно важную роль играет операционная система, на которой код запускается. Ведь дело не только в компиляторе или интерпретаторе, но и в службах, которые работают в тесном и дружеском круге. А за корректность работы этих боевых единиц отвечает ядро этой ОС. Речь пойдет о Windows и Linux. И это не из разряда ЭТО лучше, а ЭТО хуже, ведь выбор редактора или системы — это не больше, чем дело вкуса в наше время. ВСЕ на сегодняшний день предоставляют массу инструментов для реализации чего-либо. Причиной того, что я отдаю предпочтение Linux – это гибкость. К сожалению, не все дополнения к Python работают на детище Microsoft. На пример: celery/redis, git, работа с локальными веб-серверами, docker….Думаю те, кто работали хотя бы с этим сталкивались с «некоторыми сложностями». Поэтому я думаю, что для любого Python-программиста работа с Linux (MacOS), мягко говоря, необходима…
Начало работы
И так Вы установили флаг в компонентах Windows,
и скачали любимый дистрибутив из официального магазина.
.
После простейших манипуляций создания пользователя вы получаете доступ к терминалу Linux. Ничего необычного, если не брать в учет, то что файловые системы обеих ОС не изолированы друг от друга, в следствие чего появляется возможность манипуляции файловой системой Windows из-под Linux. Все логические разделы доступны в точке монтирования
/mnt/c/Program Files/
Разработка
Теперь перейдем непосредственно к разработке. При выборе редактора я бы остался с Visual Studio Code. Он включает в себя очень много инструментов, в том числе и отладчик, что делает из него полноценную IDE. Создание виртуального окружения на разных системах отличается. К примеру, после применения команды
python -m venv venv
на Windows создается .bat-активатор и python.exe файл, который будет использоваться в то время, как Linux копирует бинарную систему python. VS Code достаточно гибко настраиваемый с помощью расширений.
Ctrl+Shift+Xпозволит быстро перейти к дополнениям. В поиске нужно ввести WSL и скачать первое расширение из списка.
Для удобной разработки стоит добавить Python, Git History, Django… А дальше уже чего душа пожелает.
После этого смело перезапускайте редактор, после чего можете открывать свой проект
File -> Open FolderПосле загрузки обратите внимание в левый нижний угол экрана.
Это позволит переоткрыть папку с использованием WSL
Разница в том, что VS Code в этом случае переключается на ядро Linux, которое является нижним слоем ядра Windows. Это позволит использовать нужный интерпретатор, а так же терминал прямо из редактора.
Так же можно использовать Windows Terminal. Это значительно повысит эффективность работы, так как в него так же интегрирована WSL.
В комплексе все это обеспечивает комфортную работу на Windows с возможностями Linux. А также преимущественным фактором есть то, что рабочая среда имеет доступ к основной системе, но изолирована от нее ядром и базовой файловой системой.
Комментарии (29)
Tanner
20.10.2019 06:40Я не могу понять, что нового даёт WSL 2 в плане интеграции с Linux, чего в Windows не было ещё 10 лет назад? Как я понимаю, основа технологического стека ? это
- Hyper-V, паравиртуализацию линукса туда завезли ещё в 2008 году емнип,
- Протокол 9P, который тоже был с нами уже очень давно, в куче конкретных реализаций под пермиссивными лицензиями, поэтому использовался, например, в VirtualBox, libvirt, QEMU на Windows.
Понятно, что паравиртуализация ? это медленно и затратно по сравнению с нативным выполнением; сетевая ФС тоже имеет кучу недостатков, начиная от производительности и кончая необходимостью для доступа к файлам держать клиента запущенным.
И первая реализация WSL вроде как должна была победить эти недостатки за счёт нативной подсистемы исполнения Linux-бинарников, как это сделано в Wine. Но MS выбросил WSL 1 после года разработки (и весьма неплохих результатов, если сравнивать с развитием того же Wine) и сделал откат к технологиям, по сути уже существовавшим как commodity.
Так за что именно хвалят сейчас MS?fralik
20.10.2019 09:20Идея в WSL1 была в эмуляции вызовов ядра линукс. Т.е. они по сути писали своё ядро, совестимое по API с линуксом. На мой взгляд, мертворожденная затея т. к. очень сложно поддерживать в актуальном состоянии.
Tanner
20.10.2019 10:00+1А как насчёт wine?
0xd34df00d
20.10.2019 17:10Wine не эмулирует ядро линукса, так что из него плохая замена WSL.
Tanner
20.10.2019 17:52Я имел в виду, что wine эмулирует (точнее, транслирует) системные вызовы win32 на линуксе, и при этом поддерживается в актуальном состоянии, приносит практическую пользу и не является «мертворожденной затеей». Если так, то почему эмуляция вызовов линукса в виндовс (WSL 1) должна быть «мертворожденной затеей»?
0xd34df00d
20.10.2019 19:42+1Потому что адски тормозит.
Я имел счастье получить опыт работы с WSL1, это действительно очень больно.
r_clark Автор
20.10.2019 09:25В основном это исправленные некоторые моменты, а так же добавили поддержку docker.
funca
20.10.2019 09:46+1В wsl1 они продвинулись достаточно далеко. Но упёрлись в ряд не решаемых на этом уровне проблем, таких как эмуляция сети и привилегий. iptables толком так и не заработал, а без него не работает большая часть инфраструктуры docker. Для решения нужно делать эмуляцию уровнем ниже и в wsl2 будет всамделешнее ядро.
Tarik02
20.10.2019 10:36WSL 2 намного производительный чем WSL 1. Сам активно юзаю WSL 2, там все быстрее работает, начиная от фс (той, что в образе), заканчивая любыми операциями с большим процентом сисколлов. Намного быстрее работает git, apt, yarn. Конечно, интеграция с фс хоста очень медленная (обещают исправить хоть как-то до релиза), но в общем это не критично, если вести разработку в внутренней фс (а она отлично доступна из хоста, даже лучше, чем в WSL 1). С первой проблемой пришлось бороться в виде удаления папок хоста из PATH. И вместо этого генерировать "shims" для тех екзешников.
411
20.10.2019 22:32Наталкивался на тесты, geekbench слегка меньше набирает на WSL2, чем на WSL. Но там разница в пределах 1%.
С другой стороны, моя предыдущая рабочая конфигурация была Ubuntu под VMware, после перехода на WSL2 тесты стали в 2 раза быстрее гоняться.
И ещё вызовы виндовых exe медленные. Нужны были для интеграции tmux и vim с буфером винды. Похожие проблему могут возникнуть, если захочется из консоли помониторить ресурсы винды. Задержка не сверхкритичная, но заметная.
Tarik02
20.10.2019 22:58+1Зависит, что измерять. Если IO (в пределах фс внутри WSL), то разница большая и, например всякие штуки, которые едят много IO (всякие zsh, vim с кучей плагинов, gcc/clang с большим количеством инклудов), то это очень даже заметно. А запуск exe, доступ к drivefs стал на много медленнее.
taliano
20.10.2019 09:11А теперь вопрос. Как эту бережно и старательную настроенную среду перенести на прод? Или разрабатывают и тестируют в одном окружении, а выкатывают в прод на другом?
faoriu
20.10.2019 11:50Мне одному кажется, что Microsoft таким образом решил приватизировать Linux? Зачем теперь кому-то ставить настоящий дистрибутив Linux, если его теперь можно просто скачать под винду с магазина MS.
masai
20.10.2019 12:29По-моему нет никакой проблемы. Точно так же можно сказать, что, дескать, зачем кому-то покупать Windows, если всё равно работаешь в Linux.
faoriu
20.10.2019 13:48Раньше надо было выбирать между двумя экосистемами, а теперь можно выбирать обе, но основой будет Windows, а не Linux.
Проблема тут больше для продвигающих Linux на десктопе, для юзеров проблем нет никаких.
em92
21.10.2019 08:34VS Code работает на GNU/Linux-подобных ОС. Зачем тут винда, если все-равно хотим, чтобы код, который пишем запускался не на виндовой среде?
PS: Пользуясь случаем, рекомендую ознакомиться: github.com/VSCodium/vscodium#why-does-this-existfunca
21.10.2019 09:16Современные среды разработки в организациях это не только IDE, но и средства коммуникации, планирования, документирования, аналитики, безопасности, решения юридических и финансовых вопросов. M$ предлагает массу дорогуших интегрированных инструментов, с которыми лицензии на операционную систему идут чутьли не в подарок.
EobardThawne
21.10.2019 10:46Раньше говорили, что в всл будет возможность использовать gpu прямо из под всла. Сейчас такое возможно?
semenovs
Вообще Pycharm отлично работает с WSL. Так же как и с докер контейнером, окружением анаконды и даже с сервером по ssh. При создании проекта просто нужно настроить интерпритатор.
excentro
По ssh PyCharm, я считаю, работает хуже VS Code. PyCharm редактирует файлы локально, а для запуска заливает на удаленный сервер. VS Code же сразу редактирует и запускает на удаленном сервере.
r_clark Автор
Я бы поставил под сомнение «отличную» работу. Во-первых нет возможности использовать окружение, которые находятся на логических разделах винды, а так же не всегда срабатывают дополнения, из-за проблем с импортом пакетов