Windows 10 + Python = VS Code + WSL

  • Tutorial
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. А также преимущественным фактором есть то, что рабочая среда имеет доступ к основной системе, но изолирована от нее ядром и базовой файловой системой.
Поделиться публикацией
AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Подробнее
Реклама

Комментарии 33

    +1

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

      +1
      По ssh PyCharm, я считаю, работает хуже VS Code. PyCharm редактирует файлы локально, а для запуска заливает на удаленный сервер. VS Code же сразу редактирует и запускает на удаленном сервере.
        +2
        Я бы поставил под сомнение «отличную» работу. Во-первых нет возможности использовать окружение, которые находятся на логических разделах винды, а так же не всегда срабатывают дополнения, из-за проблем с импортом пакетов
        0
        Я не могу понять, что нового даёт WSL 2 в плане интеграции с Linux, чего в Windows не было ещё 10 лет назад? Как я понимаю, основа технологического стека − это
        1. Hyper-V, паравиртуализацию линукса туда завезли ещё в 2008 году емнип,
        2. Протокол 9P, который тоже был с нами уже очень давно, в куче конкретных реализаций под пермиссивными лицензиями, поэтому использовался, например, в VirtualBox, libvirt, QEMU на Windows.

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

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

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

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

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

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


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

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

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

                0

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

                  0
                  А PCI-E passthrough возможен?
                    0
                    Теоретически — да, практически — я думаю, только тогда, когда мелкие завезут это сами. В менеджере Hyper-V эту VM не видно вообще, но юзается Hyper-V, это точно.
                      0
                      Было бы очень сподручно, ибо CUDA SDK на WSL1 не фурычит.
                    0

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


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


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

                      +1

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

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

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

                        0
                        это точно)
                      0

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

                        0

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

                          0

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


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

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

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

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

                              0

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

                                0
                                Настроил WSL на Ubuntu 16.04, VSCode и Python 2.7 (не спрашивайте почему...) с pytest и appium — работает на ура. Даже быстрее чем Ubuntu 16.04 + Gnome + все остальное.

                                Из проблемного:
                                — тонкость использования пакетов установленных и на Windows и в Ubuntu одновременно;
                                — некоторые сложности настройки версий (связано со старостью Убунты) и прав внутри саб-ОС;
                                — проблемы зависания VSCode с включенным на нем Python Preview дополнением в работе с большими файлами (решается выключением расширения или перезагрузкой VSCode).
                                  0
                                  А зачем всё это, если Python прекрасно работает на Windows?
                                    0
                                    А я ведь правильно понимаю, что wsl 2 в отличие от wsl требуется vt-x? Есть ли возможность запустить wsl 2 на процессоре без поддержки аппаратной виртуализации?
                                      0
                                      Последняя версия WSL использует архитектуру Hyper-V для реализации виртуализации. Эта архитектура будет доступна на необязательном компоненте «платформа виртуальной машины». Этот дополнительный компонент будет доступен во всех SKU.

                                    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                    Самое читаемое