О чем эта статья

Эта статья для тех, кто столкнулся с необходимостью иметь компьютер под управлением системы из семейства Linux и при этом есть единственный компьютер под управлением Windows. Для таких случаев в Windows есть стандартное решение под названием WSL (Windows Subsystem for Linux). Конечно нельзя назвать данное решение полноценным. Но для тестирования проекта или обучения вполне может подойти. В моем случае решил использовать эту систему для обучения работы в Airflow. Что из этого вышло покажу дальше в статье. Забегая вперед скажу, что не все так однозначно ни с подсистемой Linux в Windows ни с дальнейшей работай проектов в ней.

Для работы мы используем:

  • компьютер под управлением Windows 10

  • программа VSC (Visual Studio Code или VSCode)

  • установленная в Windows база данных PostgreSQL

Оглавление

  1. Установка и запуск WSL в Windows

  2. Открытие проекта, расположенного в Linux в VSC

  3. Особенности настройки баз данных PostgreSQL

  4. Итоги и выводы

1. Установка и запуск WSL в Windows

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

Перед началом работы полезно проверить, установлена ли уже подсистема и какой дистрибутив используется по умолчанию. Для этого открываем командную строку от имени администратора (в нижнем поле поиска вводим "командная строка", нажимаем правой кнопкой и запускаем от имени администратора) и выполняем команду:

wsl --status

В моем случае система показала:

  • Распределение по умолчанию: Ubuntu

  • Версия по умолчанию: 2

Это означает, что WSL уже установлен, используется Ubuntu и задействована вторая версия подсистемы, которая работает с полноценным ядром Linux.

Если у вас WSL не установлен, достаточно выполнить команду:

wsl --install

и перезагрузить компьютер — система сама скачает и настроит все необходимое.

После установки WSL запустить Linux можно разными способами. Самый простой способ — ввести в командной строке:

wsl

Пример выполнения команды ниже. Надо отметить, что запуск может занять длительное время, может показаться, что ничего не происходит, на самом деле происходит запуск подсистемы Linux.

Запуск WSL после установки и перезагрузки компьютера с помощью команды wsl.
Запуск WSL после установки и перезагрузки компьютера с помощью команды wsl.

Перейдем в корневую папку и создадим там тестовый проект. Порядок ввода команд следующий:

cd ~
mkdir test
cd test

На этом этапе у нас есть папка с проектом в Linux-окружении. Теперь самое интересное — открыть этот проект в VSCode, который работает в Windows.

2. Открытие проекта, расположенного в Linux в VSC

Для комфортной работы с кодом нам понадобится Visual Studio Code. Главная хитрость — не просто открыть папку в Windows, а подключиться именно к WSL-окружению. Открываем VSCode, переходим во вкладку расширений (Ctrl+Shift+X) и находим WSL. На скриншоте видно, что это расширение от Microsoft с более чем 37 миллионами загрузок и высоким рейтингом. Устанавливаем его.

Расширение необходимое для установки в VSC.
Расширение необходимое для установки в VSC.

Для подключеня VSC к проекту находясь в папке проекта в терминале WSL (в командной строке), выполняем команду:

code .

Автоматически запустится VSC. При первом запуске этой команды VSCode может предложить установить дополнительные компоненты для интеграции с WSL — соглашаемся. После подключения в левом нижнем углу VSCode появится индикатор WSL: Ubuntu, а в проводнике откроется файловая система Linux.

Теперь мы можем полноценно работать с кодом, использовать терминал VSCode (который автоматически будет внутри WSL), ставить пакеты через apt, запускать Python-скрипты и при этом пользоваться всеми возможностями VSCode — автодополнением, отладчиком, Git-интеграцией.

3. Особенности настройки баз данных PostgreSQL

Теперь переходим к самому интересному — работе с базами данных. В моем случае для обучения Airflow потребовалась PostgreSQL. Тут есть особенность. Если у вас уже была установлена база данных в Windows то даже из среды WSL приложения будут пытаться подключиься именно к ней. Так было и в моем случае. Хотя я устанавливал базу данных именно в WSL - Airflow все равно пытался подключиnься именно к базе, установленной и сконфигурированной в Windows. При этому в командной строке того же VSC когда вы открывает проект, расположенный в WSL, управлять базой данных в Windows вы не сможете, придется открыть отдельный терминал для работы с ней в самой среде Windows.

Еще хочу упомянуть об одной интересной особенности работы с базами данных в Windows. Часто после установки PostgreSQL, ее настройки и попытки подключиться из какого либо проекта вы можете получить неоднозначное сообщение об ошибке:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc2 in position 67: invalid continuation byte

Ну или что то в этом духе. Так было к примеру у меня при работе с проектом на Django, тоже самое было и с Airflow из WSL. И я достаточно много врмени потратил чтобы на просторах интеренета все же отыскать решение. Оказалось дело в настройках в Windows. Для корректной работы базы данных необходимо в Windows звйти в меню Региональные стандарты - Изменение форматов даты - Изменить язык системы и поставить крайне важную для работы PostgreSQL галочку:

Крайне важная галочка для работы PostgreSQL в Windows.
Крайне важная галочка для работы PostgreSQL в Windows.

Только так PostgreSQL в Windows будет работать с приложениями корректно.

4. Итоги и выводы

Что в итоге получилось с обучением Airflow? Скажу честно — не все гладко, но вполне работоспособно.

Плюсы подхода с WSL:

  • Быстрый доступ к Linux-окружению без виртуальной машины

  • Отличная интеграция с VSCode (спасибо расширению WSL)

  • Возможность использовать Linux-инструменты и Windows-приложения параллельно

Минусы и сложности:

  • Путаница с файловыми системами (где что хранить)

  • Нетривиальная настройка баз данных для взаимодействия Windows и WSL

  • Иногда приходится перезапускать WSL (wsl --shutdown) при проблемах с сетью

  • Некоторые Linux-сервисы ведут себя нестандартно

Если вы планируете тестовую разработку или обучение — смело используйте WSL, но сразу храните все проекты в Linux-разделе, а для работы с кодом обязательно подключите VSCode с расширением WSL. Тогда разница с "настоящим" Linux будет почти незаметна.

Спасибо за внимание. Надеюсь моя статья будет полезна.

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


  1. CatAssa
    27.02.2026 19:10

    Если вы планируете тестовую разработку или обучение — смело используйте WSL,

    Есть же бесплатные VMware Workstation, VirtualBoox, есть Hiper-V в самой Windows... вам не нужны такие вещи, как возможность создавать снапшоты, клоны образов гостевых машин, вам не нужна безопасная песочница для тестирования софта, не нужна возможность создать надёжную виртуальную сеть, не нужен контроль за использование ресурсов вашей хост-машины?


    1. nikulin_krd
      27.02.2026 19:10

      А что за «VirtualBoox» и «Hiper-V»?)))) Открою вам тайну, WSL2 работает на Hyper-V! Да и в целом ваши тезисы опираются на какую-то странную, известную только вам, информацию видимо


  1. alex1t
    27.02.2026 19:10

    Всё зависит от необходимых программ, а так на мой взгляд WSL вполне не плох для разработчика (для чего и задумывался), особенно в версии 2. Когда лет 6 назад с ковидом пришлось адаптировать Windows ноутбук для разработки под Linux (в офисе Linux стоял), пробовал WSL версии 1 и жить кончено было можно, но многое было неудобно, поэтому развернул в VirtualBox Ubuntu Server, запускал в headless режиме и уже подключался через Windows Terminal и в VS Code через Remote SSH. Так и жил несколько лет вполне успешно.

    Потом наконец решил попробовать WSL 2 и не пожалел. Та же Ubuntu, тот же systemd и схожая настройка. Также остался Windows Terminal и VS Code (только расширение поменялось на Remote WSL). Перекрёстный доступ к файлам хоста и ВМ стал проще, гораздо более быстрый запуск, плюс как раз таки работает `code .` внутри WSL, который и открывает проект в виндовом VS Code (с полноценной виртуалкой так не работало). В качестве лайфхака - поставил docker внутри WSL именно как в обычный Linux, а не через Docker Desktop, где он работает в отдельном окружении и для работы с docker внутри WSL надо его предварительно запускать.

    Вот такой опыт за 6 лет


  1. victorburre
    27.02.2026 19:10

    А чем вас Docker не устраивает?


    1. DmitryEKB90 Автор
      27.02.2026 19:10

      Docker всем устраивает, но из опыта разработки на Django:

      • разработка с тестированием в Docker: внес изменения (поменял три строчки) - собрал образ - запустил docker - потратил секунд 30.

      • разработка на тестовом сервере (без запуска в docker): внес изменения - запустил тестовый сервер - 2 секунды.

      Только исходя из этого опыта и решил учить airflow аналогичным образом. А на чистом windows он отказывался работать корректно.


      1. YeeaaahMan
        27.02.2026 19:10

        В докер компоуз файле можно настроить волум с исходниками проекта, а в среде разработки можно добавить удаленный интерпретатор Пайтон. И тогда, если приложение будет запущено в докере в режиме отладки, то при каждом объявлении файла оно будет перезапускаться. Не придется ждать сборки образа. Даже дебажить можно.


  1. gscdlr
    27.02.2026 19:10

    Раньше использовал wsl. Хорошая штука. В vscode удобно использовать Remote WSL для подключения к линукс-среде.

    Потом я дорос до того, чтобы убрать лишнюю прослойку. Теперь я счастлив на нативном гну/линуксе, но Винду пока что оставил в дуал-буте. Раз-два в год нужна для подключения к специфическим устройствам. В полевых условиях не хочется проверять взлетит ли драйвер и конкретный виндовый exe в вине|протоне.