image

Microsoft… Технологических локомотивов нашего времени. Ни для кого не секрет что они крутые, а также, что они поглощают все больше и больше… Всего. К счастью последнее время они только радуют меня своим потенциалом. А после выступления Satya Nadella, где он рассказал миру о том, что Windows больше не является основным продуктом компании, так как они положили курс на внедрение своих API…. Повсюду

Для разработчиков ПО они так же не скупятся. 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,

image

и скачали любимый дистрибутив из официального магазина.

image.

После простейших манипуляций создания пользователя вы получаете доступ к терминалу 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 и скачать первое расширение из списка.

image

Для удобной разработки стоит добавить Python, Git History, Django… А дальше уже чего душа пожелает.

image

image

image

После этого смело перезапускайте редактор, после чего можете открывать свой проект
File -> Open Folder
После загрузки обратите внимание в левый нижний угол экрана.

image

Это позволит переоткрыть папку с использованием WSL

image

Разница в том, что VS Code в этом случае переключается на ядро Linux, которое является нижним слоем ядра Windows. Это позволит использовать нужный интерпретатор, а так же терминал прямо из редактора.

image

image

Так же можно использовать Windows Terminal. Это значительно повысит эффективность работы, так как в него так же интегрирована WSL.

image

image

В комплексе все это обеспечивает комфортную работу на Windows с возможностями Linux. А также преимущественным фактором есть то, что рабочая среда имеет доступ к основной системе, но изолирована от нее ядром и базовой файловой системой.

Комментарии (29)


  1. semenovs
    20.10.2019 06:27
    +1

    Вообще Pycharm отлично работает с WSL. Так же как и с докер контейнером, окружением анаконды и даже с сервером по ssh. При создании проекта просто нужно настроить интерпритатор.


    1. excentro
      20.10.2019 08:50
      +1

      По ssh PyCharm, я считаю, работает хуже VS Code. PyCharm редактирует файлы локально, а для запуска заливает на удаленный сервер. VS Code же сразу редактирует и запускает на удаленном сервере.


    1. r_clark Автор
      20.10.2019 09:23
      +1

      Я бы поставил под сомнение «отличную» работу. Во-первых нет возможности использовать окружение, которые находятся на логических разделах винды, а так же не всегда срабатывают дополнения, из-за проблем с импортом пакетов


  1. Tanner
    20.10.2019 06:40

    Я не могу понять, что нового даёт WSL 2 в плане интеграции с Linux, чего в Windows не было ещё 10 лет назад? Как я понимаю, основа технологического стека ? это

    1. Hyper-V, паравиртуализацию линукса туда завезли ещё в 2008 году емнип,
    2. Протокол 9P, который тоже был с нами уже очень давно, в куче конкретных реализаций под пермиссивными лицензиями, поэтому использовался, например, в VirtualBox, libvirt, QEMU на Windows.

    Понятно, что паравиртуализация ? это медленно и затратно по сравнению с нативным выполнением; сетевая ФС тоже имеет кучу недостатков, начиная от производительности и кончая необходимостью для доступа к файлам держать клиента запущенным.

    И первая реализация WSL вроде как должна была победить эти недостатки за счёт нативной подсистемы исполнения Linux-бинарников, как это сделано в Wine. Но MS выбросил WSL 1 после года разработки (и весьма неплохих результатов, если сравнивать с развитием того же Wine) и сделал откат к технологиям, по сути уже существовавшим как commodity.

    Так за что именно хвалят сейчас MS?


    1. fralik
      20.10.2019 09:20

      Идея в WSL1 была в эмуляции вызовов ядра линукс. Т.е. они по сути писали своё ядро, совестимое по API с линуксом. На мой взгляд, мертворожденная затея т. к. очень сложно поддерживать в актуальном состоянии.


      1. Tanner
        20.10.2019 10:00
        +1

        А как насчёт wine?


        1. 0xd34df00d
          20.10.2019 17:10

          Wine не эмулирует ядро линукса, так что из него плохая замена WSL.


          1. Tanner
            20.10.2019 17:52

            Я имел в виду, что wine эмулирует (точнее, транслирует) системные вызовы win32 на линуксе, и при этом поддерживается в актуальном состоянии, приносит практическую пользу и не является «мертворожденной затеей». Если так, то почему эмуляция вызовов линукса в виндовс (WSL 1) должна быть «мертворожденной затеей»?


            1. 0xd34df00d
              20.10.2019 19:42
              +1

              Потому что адски тормозит.


              Я имел счастье получить опыт работы с WSL1, это действительно очень больно.


    1. r_clark Автор
      20.10.2019 09:25

      В основном это исправленные некоторые моменты, а так же добавили поддержку docker.


    1. funca
      20.10.2019 09:46
      +1

      В wsl1 они продвинулись достаточно далеко. Но упёрлись в ряд не решаемых на этом уровне проблем, таких как эмуляция сети и привилегий. iptables толком так и не заработал, а без него не работает большая часть инфраструктуры docker. Для решения нужно делать эмуляцию уровнем ниже и в wsl2 будет всамделешнее ядро.


    1. Tarik02
      20.10.2019 10:36

      WSL 2 намного производительный чем WSL 1. Сам активно юзаю WSL 2, там все быстрее работает, начиная от фс (той, что в образе), заканчивая любыми операциями с большим процентом сисколлов. Намного быстрее работает git, apt, yarn. Конечно, интеграция с фс хоста очень медленная (обещают исправить хоть как-то до релиза), но в общем это не критично, если вести разработку в внутренней фс (а она отлично доступна из хоста, даже лучше, чем в WSL 1). С первой проблемой пришлось бороться в виде удаления папок хоста из PATH. И вместо этого генерировать "shims" для тех екзешников.


      1. 6opoDuJIo
        20.10.2019 13:44

        А PCI-E passthrough возможен?


        1. Tarik02
          20.10.2019 15:14

          Теоретически — да, практически — я думаю, только тогда, когда мелкие завезут это сами. В менеджере Hyper-V эту VM не видно вообще, но юзается Hyper-V, это точно.


          1. 6opoDuJIo
            21.10.2019 12:57

            Было бы очень сподручно, ибо CUDA SDK на WSL1 не фурычит.


      1. 411
        20.10.2019 22:32

        Наталкивался на тесты, geekbench слегка меньше набирает на WSL2, чем на WSL. Но там разница в пределах 1%.


        С другой стороны, моя предыдущая рабочая конфигурация была Ubuntu под VMware, после перехода на WSL2 тесты стали в 2 раза быстрее гоняться.


        И ещё вызовы виндовых exe медленные. Нужны были для интеграции tmux и vim с буфером винды. Похожие проблему могут возникнуть, если захочется из консоли помониторить ресурсы винды. Задержка не сверхкритичная, но заметная.


        1. Tarik02
          20.10.2019 22:58
          +1

          Зависит, что измерять. Если IO (в пределах фс внутри WSL), то разница большая и, например всякие штуки, которые едят много IO (всякие zsh, vim с кучей плагинов, gcc/clang с большим количеством инклудов), то это очень даже заметно. А запуск exe, доступ к drivefs стал на много медленнее.


  1. taliano
    20.10.2019 09:11

    А теперь вопрос. Как эту бережно и старательную настроенную среду перенести на прод? Или разрабатывают и тестируют в одном окружении, а выкатывают в прод на другом?


    1. r_clark Автор
      20.10.2019 09:26

      Не пойму в чем здесь возникает проблема.


    1. 411
      20.10.2019 22:27

      Скорей всего тем же способом, которым вы это делали и раньше.


      1. r_clark Автор
        21.10.2019 06:51

        это точно)


  1. faoriu
    20.10.2019 11:50

    Мне одному кажется, что Microsoft таким образом решил приватизировать Linux? Зачем теперь кому-то ставить настоящий дистрибутив Linux, если его теперь можно просто скачать под винду с магазина MS.


    1. masai
      20.10.2019 12:29

      По-моему нет никакой проблемы. Точно так же можно сказать, что, дескать, зачем кому-то покупать Windows, если всё равно работаешь в Linux.


      1. faoriu
        20.10.2019 13:48

        Раньше надо было выбирать между двумя экосистемами, а теперь можно выбирать обе, но основой будет Windows, а не Linux.


        Проблема тут больше для продвигающих Linux на десктопе, для юзеров проблем нет никаких.


    1. hurtavy
      20.10.2019 12:42

      ну да, раньше же было сложнее, надо было в виртуалку самому ставить, ага?


  1. tzps
    20.10.2019 14:48

    А толку? Что в старом WSL видеокарту не пробросить, что в новом…


  1. em92
    21.10.2019 08:34

    VS Code работает на GNU/Linux-подобных ОС. Зачем тут винда, если все-равно хотим, чтобы код, который пишем запускался не на виндовой среде?

    PS: Пользуясь случаем, рекомендую ознакомиться: github.com/VSCodium/vscodium#why-does-this-exist


    1. funca
      21.10.2019 09:16

      Современные среды разработки в организациях это не только IDE, но и средства коммуникации, планирования, документирования, аналитики, безопасности, решения юридических и финансовых вопросов. M$ предлагает массу дорогуших интегрированных инструментов, с которыми лицензии на операционную систему идут чутьли не в подарок.


  1. EobardThawne
    21.10.2019 10:46

    Раньше говорили, что в всл будет возможность использовать gpu прямо из под всла. Сейчас такое возможно?