О чем эта статья
Эта статья для тех, кто столкнулся с необходимостью иметь компьютер под управлением системы из семейства Linux и при этом есть единственный компьютер под управлением Windows. Для таких случаев в Windows есть стандартное решение под названием WSL (Windows Subsystem for Linux). Конечно нельзя назвать данное решение полноценным. Но для тестирования проекта или обучения вполне может подойти. В моем случае решил использовать эту систему для обучения работы в Airflow. Что из этого вышло покажу дальше в статье. Забегая вперед скажу, что не все так однозначно ни с подсистемой Linux в Windows ни с дальнейшей работай проектов в ней.
Для работы мы используем:
компьютер под управлением Windows 10
программа VSC (Visual Studio Code или VSCode)
установленная в Windows база данных PostgreSQL
Оглавление
Установка и запуск WSL в Windows
Открытие проекта, расположенного в Linux в VSC
Особенности настройки баз данных PostgreSQL
Итоги и выводы
1. Установка и запуск WSL в Windows
WSL стандартное решение для Windows, поэтому установка и настройка системы максимально простая. Быстро пробежимся по пунктам как это сделать.
Перед началом работы полезно проверить, установлена ли уже подсистема и какой дистрибутив используется по умолчанию. Для этого открываем командную строку от имени администратора (в нижнем поле поиска вводим "командная строка", нажимаем правой кнопкой и запускаем от имени администратора) и выполняем команду:
wsl --status
В моем случае система показала:
Распределение по умолчанию: Ubuntu
Версия по умолчанию: 2
Это означает, что WSL уже установлен, используется Ubuntu и задействована вторая версия подсистемы, которая работает с полноценным ядром Linux.
Если у вас WSL не установлен, достаточно выполнить команду:
wsl --install
и перезагрузить компьютер — система сама скачает и настроит все необходимое.
После установки WSL запустить Linux можно разными способами. Самый простой способ — ввести в командной строке:
wsl
Пример выполнения команды ниже. Надо отметить, что запуск может занять длительное время, может показаться, что ничего не происходит, на самом деле происходит запуск подсистемы Linux.

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

Для подключеня 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 будет работать с приложениями корректно.
4. Итоги и выводы
Что в итоге получилось с обучением Airflow? Скажу честно — не все гладко, но вполне работоспособно.
Плюсы подхода с WSL:
Быстрый доступ к Linux-окружению без виртуальной машины
Отличная интеграция с VSCode (спасибо расширению WSL)
Возможность использовать Linux-инструменты и Windows-приложения параллельно
Минусы и сложности:
Путаница с файловыми системами (где что хранить)
Нетривиальная настройка баз данных для взаимодействия Windows и WSL
Иногда приходится перезапускать WSL (
wsl --shutdown) при проблемах с сетьюНекоторые Linux-сервисы ведут себя нестандартно
Если вы планируете тестовую разработку или обучение — смело используйте WSL, но сразу храните все проекты в Linux-разделе, а для раб��ты с кодом обязательно подключите VSCode с расширением WSL. Тогда разница с "настоящим" Linux будет почти незаметна.
Спасибо за внимание. Надеюсь моя статья будет полезна.
