Начало работы с Python для разработки веб-приложений в Windows

Ниже приведено пошаговое руководство по началу работы с Python для веб-разработки в Windows с помощью подсистемы Windows для Linux (WSL).

Настройка среды разработки

При создании веб-приложений мы рекомендуем установить Python на WSL. Многие руководства и инструкции для разработки веб-приложений на Python написаны для пользователей Linux и поэтому они используют средства упаковки и установки на основе Linux. Большинство веб-приложений также развертываются в Linux, поэтому это обеспечит согласованность между рабочими средами и средами разработки.

Если вы используете Python не для разработки веб-приложений, мы рекомендуем установить Python непосредственно в Windows из Microsoft Store. WSL не поддерживает рабочих столов или приложения с графическим пользовательским интерфейсом (например, PyGame, Gnome, KDE и т. д.). В этих случаях установите и используйте Python непосредственно в Windows. Если вы не знакомы с Python, ознакомьтесь с нашим руководством: начало работы с Python в Windows для начинающих. Если вы заинтересованы в автоматизации распространенных задач в операционной системе, ознакомьтесь с нашим руководством. Начало работы с Python в Windows для сценариев и автоматизации. Для некоторых сложных сценариев вам может потребоваться скачать определенный выпуск Python непосредственно из python.org или рассмотреть возможность установки альтернативы, например Anaconda, Jython, PyPy, WinPython, IronPython и т. д. Мы рекомендуем использовать это только в том случае, если вы являетесь более продвинутым программистом Python с определенной причиной выбора альтернативной реализации.

Установка подсистемы Windows для Linux

WSL позволяет запускать среду командной строки GNU/Linux, интегрированную непосредственно с Windows и вашими любимыми инструментами, такими как Visual Studio Code, Outlook и т. д. Мы обычно рекомендуем использовать WSL 2 для веб-разработки на Python.

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

Установив WSL и дистрибутив Linux, откройте дистрибутив Linux (его можно найти в меню "Пуск" в Windows) и проверьте версию и кодовое имя с помощью команды lsb_release -dc.

Мы рекомендуем не просто регулярно обновлять дистрибутив Linux, а сделать это сразу после установки. Так вы убедитесь в том, что у вас есть последние версии пакетов. Windows не обрабатывает это обновление автоматически. Чтобы обновить дистрибутив, используйте команду sudo apt update && sudo apt upgrade.

Совет

Установите новый Терминал Windows из Microsoft Store. В нем вы можете использовать несколько вкладок (для быстрого перехода между несколькими командным строками Linux, командной строкой Windows, PowerShell, Azure CLI и т. д.), создавать пользовательские сочетания клавиш (для открытия и закрытия вкладок, копирования и вставки и т. п.), а также применять функцию поиска и настраивать пользовательские темы (цветовые схемы, стили и размеры шрифтов, а также фоновое изображение, размытие и прозрачность). Подробнее.

Настройка Visual Studio Code

Воспользуйтесь преимуществами IntelliSense, Linting, поддержки отладки, фрагментов кодаи модульного тестирования с помощью VS Code. VS Code хорошо интегрируется с подсистемой Windows для Linux, предоставляя встроенные терминалы для создания комплексного рабочего процесса между редактором кода и командной строкой, в дополнение к поддержке Git для управления версиями с общими командами Git (добавление, фиксация, принудительная отправка, извлечение), встроенными непосредственно в пользовательский интерфейс.

  1. Скачивание и установка VS Code для Windows. VS Code также доступен для Linux, но подсистема Windows для Linux не поддерживает приложения с графическим пользовательским интерфейсом, поэтому нам нужно установить его в Windows. Не волнуйтесь, вы по-прежнему сможете выполнить интеграцию с командной строкой и инструментами Linux с помощью расширения Remote — WSL.

  2. Установите расширение Remote — WSL в VS Code. Это позволит вам использовать WSL в качестве интегрированной среды разработки и обеспечит совместимость и путь к ней. Подробнее.

Важно!

Если у вас уже установлен VS Code, убедитесь, что имеете выпуск 1.35 от мая или более поздней версии, чтобы установить расширение Remote — WSL. Мы не рекомендуем использовать WSL в VS Code без расширения Remote-WSL, так как вы потеряете поддержку автоматического завершения, отладки, подстроки и т. д. Интересный факт: это расширение WSL устанавливается в $HOME/.vscode-server/extensions.

Создание нового проекта

Давайте создадим новый каталог проекта в файловой системе Linux (Ubuntu), который затем будет работать с приложениями и инструментами Linux с помощью VS Code.

  1. Закройте VS Code и откройте Ubuntu 18.04 (командная строка WSL), перейдя в меню "Пуск " (значок windows в нижней левой части) и введя "Ubuntu 18.04".

  2. В командной строке Ubuntu перейдите к папке, в которую нужно поместить проект, и создайте для нее каталог: mkdir HelloWorld.

Ubuntu terminal

Совет

Важно помнить, что при использовании подсистема Windows для Linux (WSL) теперь вы работаете между двумя разными файловыми системами: 1) файловой системой Windows и 2) файловой системой Linux (WSL), которая является Ubuntu для нашего примера. Обратите внимание на место установки пакетов и файлов хранения. Вы можете установить одну версию средства или пакета в файловой системе Windows и совершенно другую версию в файловой системе Linux. Обновление средства в файловой системе Windows не будет влиять на средство в файловой системе Linux и наоборот. WSL монтирует жесткие диски на вашем компьютере в папку /mnt/<drive> дистрибутива Linux. Например, диск Windows C: подключается в /mnt/c/. Вы можете получить доступ к файлам Windows из терминала Ubuntu и использовать приложения и инструменты Linux для этих файлов и наоборот. Для разработки веб-приложений Python мы рекомендуем работать в файловой системе Linux, поскольку большая часть веб-инструментов изначально написана для Linux и развернута в рабочей среде Linux. Это также позволит избежать смешанной формальной модели файловой системы (например, Windows не учитывает регистр в отношении имен файлов). Тем не менее, WSL теперь поддерживает переходы между файловыми системами Linux и Windows, поэтому вы можете размещать свои файлы на любой из них. Подробнее.

Установка Python, pip и venv

Ubuntu 18.04 LTS поставляется с уже установленным Python 3.6, но без некоторых из модулей, которые можно получить с другими установками Python. Нам по-прежнему потребуется установить pip — стандартный диспетчер пакетов для Python и venv — стандартный модуль, используемый для создания и управления облегченными виртуальными средами. Помните, что вам может потребоваться обновить дистрибутив Linux, чтобы получить последнюю версию, с помощью команды sudo apt update && sudo apt upgrade.

  1. Убедитесь, что Python3 уже установлен, открыв терминал Ubuntu и введя: python3 --version. Вы должны увидеть номер версии Python. Если вам нужно обновить версию Python, сначала обновите версию Ubuntu, введя: sudo apt update && sudo apt upgrade, а затем обновите Python с помощью sudo apt upgrade python3.

  2. Установите pip, введя: sudo apt install python3-pip. Pip позволяет устанавливать дополнительные пакеты, которые не входят в стандартную библиотеку Python, и управлять ими.

  3. Установите venv, введя: sudo apt install python3-venv.

Создание виртуальной среды

Использование виртуальных сред — рекомендуемая лучшая методика для проектов разработки Python. Создав виртуальную среду, можно изолировать средства проекта и избежать конфликтов версий с инструментами для других проектов. Например, вы можете поддерживать старый веб-проект, который требует веб-платформы Django 1.2, но затем захватывающий новый проект поставляется вместе с Django 2.2. Если вы обновляете Django глобально, за пределами виртуальной среды, позже вы можете столкнуться с некоторыми проблемами управления версиями. В дополнение к предотвращению случайных конфликтов управления версиями, виртуальные среды позволяют устанавливать пакеты и управлять ими без прав администратора.

  1. Откройте терминал и выполните следующую команду в своей папке проекта HelloWorld, чтобы создать виртуальную среду с именем .venv: python3 -m venv .venv.

  2. Введите source .venv/bin/activate, чтобы активировать виртуальную среду. При срабатывании вы должны увидеть (.venv) перед командной строкой. Теперь у вас есть автономная среда, готовая к написанию кода и установке пакетов. Завершив работу с виртуальной средой, введите следующую команду, чтобы отключить ее: deactivate.

    Create a virtual environment

Совет

Мы рекомендуем создать виртуальную среду в каталоге, в котором будет размещен проект. В уникальных именах нет необходимости, так как каждый проект должен иметь собственный отдельный каталог, следовательно, и собственную виртуальную среду. Мы предлагаем использовать имя .venv для соблюдения соглашения Python. Некоторые инструменты (такие как pipenv) также по умолчанию имеют это имя, если вы устанавливаете их в каталог проекта. Вам не нужно использовать .env, поскольку это противоречит файлам определений переменных среды. Как правило, не рекомендуется использовать имена, "отделенные-пунктиром", так как вам не нужно ls регулярное напоминание о существовании каталога. Мы также рекомендуем добавить .venv в файл .gitignore. (Вот Шаблон gitignore по умолчанию GitHub для Python для справки.) Дополнительные сведения о работе с виртуальными средами в VS Code см. в статье "Использование сред Python в VS Code".

Открытие окна "WSL —удаленный доступ"

VS Code использует расширение "Удаленный доступ-WSL" (установлено ранее), чтобы использовать подсистему Linux как удаленный сервер. Это позволяет использовать WSL в качестве интегрированной среды разработки. Подробнее.

  1. Откройте папку проекта в VS Code из терминала Ubuntu, введя: code . (с помощью "..." VS Code открывает текущую папку).

  2. Из Защитника Windows предупреждение системы безопасности, в котором нужно выбрать "Разрешить доступ". После открытия VS Code вы увидите индикатор удаленного узла Подключение ion Host в левом нижнем углу, чтобы узнать, что вы редактируете в WSL: Ubuntu-18.04.

    VS Code Remote Connection Host indicator

  3. Закройте терминал Ubuntu. В дальнейшем мы будем использовать терминал WSL, интегрированный в VS Code.

  4. Откройте терминал WSL в VS Code, нажав Ctrl+` (используя символ обратного апострофа) или выбрав Представление>Терминал. После чего откроется командная строка bash (WSL), открытая в папке проекта, путь к которой вы создали в терминале Ubuntu.

    VS Code with WSL terminal

Установка расширения Microsoft Python

Для "Удаленный доступ –WSL" потребуется установить все расширения VS Code. Уже установленные локально расширения VS Code не будут доступны автоматически. Подробнее.

  1. Откройте окно расширения VS Code с помощью CTRL+SHIFT+X (или используйте меню, чтобы перейти к Вид>Расширения).

  2. В верхнем поле Поиск расширений в Marketplace, введите: Python.

  3. Найдите расширение Python (ms-python.python) от Microsoft и нажмите зеленую кнопку Установить.

  4. После завершения установки расширения необходимо нажать синюю кнопку Требуется перезагрузка. Это перезагрузит VS Code и отобразит WSL: UBUNTU-18.04 — раздел "Установленные " в окне расширений VS Code, показывающий, что вы установили расширение Python.

Запуск простой программы Python

Python — это интерпретируемый язык и поддерживает различные типы интерпретаторов (Python2, Anaconda, PyPy и т. д.). VS Code должен по умолчанию использоваться интерпретатором, связанным с вашим проектом. Если у вас есть причина изменить его, выберите интерпретатор, отображаемый в синей строке в нижней части окна VS Code, или откройте палитру команд (CTRL+SHIFT+P) и введите команду Python: Выбрать интерпретатор. На экране появится список установленных интерпретаторов Python. Using Python environments in VS Code(Использование сред Python в VS Code).

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

  1. Откройте окно проводника VS Code, введя Ctrl+Shift+E (или воспользуйтесь меню для перехода к Представление>Обозреватель).

  2. Откройте встроенный терминал WSL, если он еще не открыт, введя Ctrl+Shift+` и убедитесь, что папка проекта python HelloWorld выбрана.

  3. Создайте файл python, введя: touch test.py. Вы должны увидеть только что созданный файл, который отобразится в окне проводника в папках .venv и .vscode уже в вашем каталоге проекта.

  4. Выберите в окне обозревателя только что созданный файл test.py, чтобы открыть его в VS Code. Поскольку .py в имени файла определяет для VS Code, что это файл Python, ранее загруженное расширение Python автоматически выберет и загрузит интерпретатор Python, который будет отображаться в нижней части окна VS Code.

    Select Python interpreter in VS Code

  5. Вставьте этот код Python в файл test.py, после чего сохраните файл (Ctrl+S):

    print("Hello World")
    
  6. Чтобы запустить только что созданную программу Python "Hello World", выберите файл test.py в окне обозревателя VS Code, затем щелкните файл правой кнопкой мыши, чтобы открыть меню параметров. Выберите пункт Run Python File in Terminal (Запустить файл Python в окне терминала). Или введите python test.py во встроенном окне терминала WSL, чтобы запустить программу "Hello World". Интерпретатор Python выведет "Hello World" в окне терминала.

Поздравляем. Теперь у вас есть все для создания и запуска программ Python! Теперь давайте попробуем создать приложение Hello World с двумя самыми популярными веб-платформами Python: Flask и Django.

Руководство по созданию Hello World на Flask

Flask представляет собой платформу веб-приложений для Python. Документация Flask содержит рекомендации по началу работы и более подробному руководству по созданию небольшого, но полного приложения.

Следуя приведенным ниже инструкциям, вы можете создать небольшое приложение Flask "Hello World" с помощью VS Code и WSL.

  1. Откройте Ubuntu 18.04 (командная строка WSL), перейдя в меню "Пуск " (значок нижнего левого окна Windows) и введя "Ubuntu 18.04".

  2. Создайте каталог для проекта: mkdir HelloWorld-Flask, а затем cd HelloWorld-Flask, чтобы войти в каталог.

  3. Создайте виртуальную среду, чтобы установить средства проекта: python3 -m venv .venv

  4. Откройте проект HelloWorld-Flask в VS Code, введя команду: code .

  5. Откройте встроенный терминал WSL (bash) в VS Code, введя Ctrl+Shift+` (папка проекта HelloWorld-Flask уже должна быть выбрана). Закройте командную строку Ubuntu, поскольку двигаясь вперед мы будем работать в терминале WSL, интегрированном с VS Code

  6. Активируйте виртуальную среду, созданную на шаге 3 с помощью терминала Bash в VS Code: source .venv/bin/activate. При срабатывании вы должны увидеть (.venv) перед командной строкой.

  7. Установите Flask в виртуальной среде, введя: python3 -m pip install flask. Убедитесь, что он установлен, введя: python3 -m flask --version.

  8. Создайте новый файл для кода Python: touch app.py

  9. Откройте файл app.py в проводнике VS Code (Ctrl+Shift+E, а затем выберите файл app.py). Это приведет к выбору интерпретатора расширением Python. По умолчанию это Python 3.6.8 64-bit ('.venv': venv). Обратите внимание, что оно также обнаружило виртуальную среду.

    Activated virtual environment

  10. Добавьте код в app.py, чтобы импортировать Flask и создать экземпляр объекта Flask:

    from flask import Flask
    app = Flask(__name__)
    
  11. Кроме того, добавьте в app.py функцию, которая возвращает содержимое, в данном случае — простую строку. Используйте декоратор app.route Flask, чтобы сопоставить маршрут URL-адреса "/" с этой функцией:

    @app.route("/")
    def home():
        return "Hello World! I'm using Flask."
    

    Совет

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

  12. Сохраните файл app.py (CTRL+S).

  13. Войдите в терминал, запустив приложение с помощью приведенной ниже команды.

    python3 -m flask run
    

    Это приведет к запуску сервера разработки Flask. Сервер разработки ищет app.py по умолчанию. При запуске Flask вы должны увидеть результат, аналогичный приведенному ниже.

    (env) user@USER:/mnt/c/Projects/HelloWorld$ python3 -m flask run
     * Environment: production
       WARNING: This is a development server. Do not use it in a production deployment.
       Use a production WSGI server instead.
     * Debug mode: off
     * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
    
  14. Откройте веб-браузер по умолчанию на преобразованной для просмотра странице, Ctrl+щелчок URL-адреса http://127.0.0.1:5000/ в окне терминала. В браузере должно появиться следующее сообщение:

    Hello World! I'm using Flask.

  15. Обратите внимание, что при посещении URL-адреса, например "/", в терминале отладки появится сообщение, показывающее HTTP-запрос:

    127.0.0.1 - - [19/Jun/2019 13:36:56] "GET / HTTP/1.1" 200 -
    
  16. Закройте приложение, используя в окне терминала команду CTRL+C.

Совет

Если вы хотите использовать имя файла, отличное от app.py, например program.py, определите переменную среды с именем FLASK_APP и установите ее значение для выбранного файла. Сервер разработки Flask использует значение FLASK_APP вместо файла по умолчанию app.py. Дополнительные сведения см. в документации Flask.

Поздравляем, вы создали веб-приложение Flask с помощью Visual Studio Code и подсистемы Windows для Linux! Более подробное руководство по использованию VS Code и Flask см. в разделе Руководство по Flask в Visual Studio Code.

Руководство по созданию Hello World на Django

Django представляет собой платформу веб-приложений для Python. В этом кратком руководстве вы создадите небольшое приложение "Hello World" Django с помощью VS Code и WSL.

  1. Откройте Ubuntu 18.04 (командная строка WSL), перейдя в меню "Пуск " (значок нижнего левого окна Windows) и введя "Ubuntu 18.04".

  2. Создайте каталог для проекта: mkdir HelloWorld-Django, а затем cd HelloWorld-Django, чтобы войти в каталог.

  3. Создайте виртуальную среду, чтобы установить средства проекта: python3 -m venv .venv

  4. Откройте проект HelloWorld-Django в VS Code, введя команду:code .

  5. Откройте встроенный терминал WSL (bash) в VS Code, введя Ctrl+Shift+` (папка проекта HelloWorld-Django уже должна быть выбрана). Закройте командную строку Ubuntu, поскольку двигаясь вперед мы будем работать в терминале WSL, интегрированном с VS Code

  6. Активируйте виртуальную среду, созданную на шаге 3 с помощью терминала Bash в VS Code: source .venv/bin/activate. При срабатывании вы должны увидеть (.venv) перед командной строкой.

  7. Установите Django в виртуальной среде с помощью команды: python3 -m pip install django. Убедитесь, что он установлен, введя: python3 -m django --version.

  8. Затем выполните следующую команду, чтобы создать проект Django:

    django-admin startproject web_project .
    

    Команда startproject предполагает (с помощью . в конце), что текущая папка является папкой проекта, и создает в ней приведенные ниже ресурсы.

    • manage.py: административная программа командной строки Django для проекта. Административные команды для проекта следует запускать с помощью python manage.py <command> [options].

    • Будет создана вложенная папка web_project, которая содержит следующие файлы:

      • __init__.py: пустой файл, сообщающий Python, что эта папка является пакетом Python.
      • wsgi.py: точка входа для веб-серверов, совместимых с WSGI, для обслуживания проекта. Обычно этот файл остается без изменений, так как он предоставляет обработчики для рабочих веб-серверов.
      • settings.py: содержит параметры для проекта Django, которые изменяются в процессе разработки веб-приложения.
      • urls.py: содержит содержание проекта Django, которое также изменяется в процессе разработки.
  9. Чтобы проверить проект Django, запустите сервер разработки Django с помощью команды python3 manage.py runserver. Сервер работает на стандартном порте 8000. В окне терминала должны отобразиться выходные данные, аналогичные приведенным ниже.

    Performing system checks...
    
    System check identified no issues (0 silenced).
    
    June 20, 2019 - 22:57:59
    Django version 2.2.2, using settings 'web_project.settings'
    Starting development server at http://127.0.0.1:8000/
    Quit the server with CONTROL-C.
    

    При первом запуске сервера он создает базу данных SQLite по умолчанию в файле db.sqlite3, который предназначен для целей разработки, но может использоваться в рабочей среде для малообъемных веб-приложений. Кроме того, встроенный веб-сервер Django предназначен только для целей локальной разработки. Однако, при развертывании на веб-узле, Django использует вместо этого веб-сервер узла. Модуль wsgi.py в проекте Django отвечает за подключение к рабочим серверам.

    Если вы хотите использовать порт, отличный от стандартного порта 8000, укажите номер порта в командной строке, например python3 manage.py runserver 5000.

  10. Ctrl+click URL-адрес http://127.0.0.1:8000/ в окне вывода терминала, чтобы открыть для этого адреса браузер по умолчанию. Если Django установлен правильно и проект является допустимым, вы увидите страницу по умолчанию. В окне вывода терминала VS Code также отображается журнал сервера.

  11. Когда закончите, закройте окно браузера и остановите сервер в VS Code, используя Ctrl+C, как указано в окне вывода терминала.

  12. Теперь, чтобы создать приложение Django, запустите административную команду служебной программы startapp в папке проекта (где находится manage.py):

    python3 manage.py startapp hello
    

    Команда создает папку с именем hello, содержащую несколько файлов кода и одну вложенную папку. Из них часто приходится работать с views.py (содержит функции, определяющие страницы в веб-приложении) и models.py (содержит классы, определяющие объекты данных). Папка migrations используется служебной программой администрирования Django для управления версиями базы данных, как описано далее в этом руководстве. Существуют также файлы apps.py (конфигурация приложения), admin.py (для создания административного интерфейса) и tests.py (для тестов), которые здесь не рассматриваются.

  13. Измените hello/views.py в соответствии с приведенным ниже кодом, который создает одно представление для домашней страницы приложения:

    from django.http import HttpResponse
    
    def home(request):
        return HttpResponse("Hello, Django!")
    
  14. Создайте файл hello/urls.py, используя приведенное ниже содержимое. Файл urls.py является местом, в котором вы указываете шаблоны для маршрутизации различных URL-адресов в соответствующие представления. Приведенный ниже код содержит один маршрут для сопоставления корневого URL-адреса приложения ("") с функцией views.home, которую вы только что добавили в hello/views.py.

    from django.urls import path
    from hello import views
    
    urlpatterns = [
        path("", views.home, name="home"),
    ]
    
  15. Папка web_project также содержит файл urls.py, в котором фактически обрабатывается маршрутизация URL-адресов. Откройте web_project/urls.py и измените его в соответствии с приведенным ниже кодом (при необходимости можно оставить полезные комментарии). Этот код запрашивает hello/urls.py приложения с помощью django.urls.include, который хранит маршруты приложения, содержащиеся в приложении. Такое разделение полезно, когда проект содержит несколько приложений.

    from django.contrib import admin
    from django.urls import include, path
    
    urlpatterns = [
        path("", include("hello.urls")),
    ]
    
  16. Сохраните все измененные файлы.

  17. В окне терминала VS Code запустите сервер разработки с python3 manage.py runserver и откройте браузер http://127.0.0.1:8000/, чтобы увидеть страницу, которая отображает "Hello, Django".

Поздравляем, вы создали веб-приложение Django с помощью VS Code и подсистемы Windows для Linux! Более подробное руководство по использованию VS Code и Django см. в разделе Руководство по Django в Visual Studio Code.

Дополнительные ресурсы