Как установить flask python на windows

Обновлено: 01.07.2024

Flask зависит от некоторых внешних библиотек - таких, как Werkzeug и Jinja2. Werkzeug - это инструментарий для WSGI - стандартного интерфейса Python между веб-приложениями и различными серверами, предназначен как для разработки, так и развёртывания. Jinja2 занимается отображением шаблонов.

Итак, как же быстро получить всё необходимое на ваш компьютер? Есть много способов, которыми вы это можете проделать, но самый обалденный - это virtualenv, так что давайте глянем в первую очередь на него.

Для начала вам понадобится Python 2.6 или новее, так что убедитесь, что у вас инсталлирован свежий Python 2.x. При использовании Flask с Python 3 загляните в раздел python3-support .

virtualenv¶

Возможно, Virtualenv - именно то, что вы захотите использовать при разработке, а если у вас на рабочем сервере есть доступ к командной оболочке, вероятно, вы захотите использовать Virtualenv и здесь.

Какую из проблем решает virtualenv? Если вам нравится Python так, как он нравится мне, скорее всего, вы захотите использовать его и в других проектах - вне приложений, созданных на базе Flask.

Но чем больше у вас проектов, тем больше вероятность, что вы будете работать с разными версиями самого Python, или, по крайней мере, с различными версиями библиотек Python. Посмотрим правде в глаза: довольно часто библиотеки нарушают обратную совместимость, и маловероятно, что серьёзное приложение будет работать вообще без каких-либо зависимостей. Так что же делать, если два или более из ваших проектов имеют конфликтующие зависимости?

Наше спасение - Virtualenv! Virtualenv предоставляет несколько соседствующих друг с другом установленных версий Python, по одной для каждого проекта. На самом деле он реально не устанавливает различные версии Python, но обеспечивает хитрый способ создать для проектов несколько изолированных друг от друга окружений. Давайте посмотрим, как работает virtualenv.

Если вы работаете с MacOS X или с Linux, есть вероятность, что заработает одна из следующих двух команд:

Возможно, одна из этих команд установит virtualenv на вашей системе. А может быть, это позволит сделать ваш пакетный менеджер. Если вы используете Ubuntu, попробуйте:

Если у вас Windows и команда easy_install не работает, вам необходимо сначала установить её. Чтобы получить дополнительную информацию о том, как это можно сделать, проверьте раздел pip и setuptools в MS Windows . Установив данную команду, запустите её, как указано чуть выше, но без префикса sudo .

После того, как virtualenv была установлена, просто запустите командный интерпретатор и создайте ваше собственное окружение. Обычно в таких случаях я создаю папку проекта, а в ней - папку venv :

Теперь, когда вы захотите работать над проектом, вам необходимо лишь активировать соответствующее окружение. Под MacOS X и Linux, выполните следующее:

Если вы используете Windows, для вас подойдёт следующая команда:

В любом случае, теперь вы должны использовать ваш virtualenv (обратите внимание, как изменилось приглашение вашей командной оболочки - для того, чтобы показать активное окружение).

А если вы захотите вернуться обратно в «реальный мир», используйте команду:

Полсе этого подсказка вашей командной оболочки вернёт свой прежний привычный вид.

Теперь, двинемся дальше. Для того, чтобы Flask появился в вашем виртуальном окружении, введите команду:

Через несколько секунд вы сможете двинуться в дальнейший путь.

Установка непосредственно в систему¶

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

(Под Windows, запустите ту же команду, но только без sudo , внутри окна с командной строкой, запущенного с привилегиями администратора системы)

Жизнь на переднем краю¶

Если вы хотите работать с самой последней версией Flask, существует два пути: можно указать pip , чтобы он загрузил версию для разработки, или можно работать со срезом с текущего состояния репозитория git. В обоих случаях, рекомендуется пользоваться virtualenv.

Получите срез с последнего состояния git в новом окружении virtualenv и запустите в режиме разработки:

Будет скачана и активирована в virtualenv текущая версия, соответствующая последнему (головному) срезу из git. В дальнейшем, чтобы обновиться до последней версии, всё, что вам будет необходимо сделать - это выполнить git pull origin .

pip и setuptools в MS Windows¶

Иногда получение стандартных инструментов по работе с пакетами в Python - таких, как pip, setuptools и virtualenv может быть несколько мудрёным, но на самом деле в этом нет ничего сложного. Вам нужны два ключевых пакета - setuptools и pip - которые позволят вам инсталлировать всё остальное (в том числе virtualenv). К счастью, есть два готовых скрипта, запустив которые вы можете развернуть оба пакета «с нуля».

Если у вас их нет, скрипт get-pip.py осуществит инсталляцию обоих (вам не нужно будет запускать ez_setup.py).

Для инсталляции последней версии setuptools, вы можете использовать следующий скрипт, предназначенный для разворачивания «с нуля»:

Оба этих скрипта необходимо скачать и запустить двойным щелчком мыши. Если у вас уже есть pip, вы можете обновить его, запустив команду:

Чаще всего, получив приглашение командной строки, вы захотите иметь возможность набрать pip и python , что должно привести к запуску этих команд, однако в Windows этого автоматически не происходит, потому что операционная система не знает, где располагаются их исполнимые файлы (вы можете попробовать!).

Наконец, для того, чтобы инсталлировать virtualenv, вы можете просто ввести:

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

Эта статья является переводом нового издания учебника Мигеля Гринберга. Прежний перевод давно утратил свою актуальность.

Автор планирует завершить его выпуск в мае 2018. Я, со своей стороны, постараюсь не отставать с переводом.

Для справки ниже приведен список статей этой серии.

Новый учебник написан в 2017 году, и, наконец, он выглядит так, как если бы он был настроен на версию Python 3. Решены проблемы с совместимостью, изменен фокус в сторону Python 3, а не Python 2 как было в 2012 году в прежней версии учебника.

К сожалению, Python 2 или 3 — это не единственное, что изменилось. Есть также несколько технологий, которые имели смысл в 2012 году, но теперь устарели. К ним относятся:

  • Механизм аутентификации OpenID, который больше не поддерживается многими провайдерами.
  • Пакет sqlalchemy-migrate для миграции баз данных, который, похоже, так же потерял поддержку сообщества. В эти дни Alembic — намного более лучший выбор для миграции чем SQLAlchemy.
  • Интерфейс командной строки Flask (Flask Shell), который в то время не существовал, а теперь является незаменимым инструментом разработчика.
  • В то время, когда Мигель начал работать над учебником, Flask blueprints были слишком новыми, поэтому он решил не использовать эту функцию. В 2017 году blueprints являются обязательными для применения в Flask.
  • Bootstrap 2 для стилизации и форматирования веб-страниц, теперь имеет две основные версии. Новые версии Bootstrap не имеют обратной совместимости с версией 2.
  • Изменения в сервисе Heroku, инструкции по развертыванию которые представлены учебнике устарели.

Многие вещи, которые изменились за эти пять лет, в основном означают, что нужно пересмотреть все главы, причем большинство из них претерпели довольно важные изменения.

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

Кроме того, у Мигеля есть еще пять лет опыта работы в качестве технического блоггера, так как продолжал создавать контент для своего блога на протяжении всех этих лет. Весь этот опыт будет отражен в обновлениях, которые он приводит в учебнике.

Более подробно читайте в блоге Мигеля

Примечание 1: Если вы ищете старые версии данного курса, это здесь.

Все примеры кода представленные в этом учебном курсе, размещены на GitHub. Загрузка кода из GitHub поможет вам сэкономить время, но я настоятельно рекомендую набирать код самостоятельно, по крайней мере, первые несколько глав. После того, как вы станете ближе знакомы с Flask можно получить доступ к коду прямо из GitHub, только в том случае, если ввод становится слишком утомительным.

В начале каждой главы, я дам вам три GitHub ссылки, которые могут быть полезны при изучении главы. Browse откроет GitHub репозиторий для микроблога в том месте, где собраны изменения к главе, которую Вы читаете, за исключением любых изменений, внесенных в будущих главах. Zip — это ссылка для загрузки zip-архива, в том числе приложения и изменений в главе. Diff — откроет графическое представление всех изменений, внесенных в главу, которую Вы собираетесь читать.

На GitHub ссылки в этой главе: Browse, Zip, Diff.

Установка Python

Если на вашем компьютере не установлен Python, установите его. Если ваша операционная система не имеет предустановленный пакет Python, вы можете скачать программу установки с официального сайта Python. Если вы используете Microsoft Windows вместе с WSL или Cygwin, обратите внимание, что вы не будете использовать родную версию Python для Windows, а версию, совместимую с Unix, которую вам нужно получить от Ubuntu (если вы используете WSL) или от Cygwin.

Чтобы убедиться, что ваша установка Python является функциональной, вы можете открыть окно терминала и ввести python3, или если это не работает, просто python. Вот что вам следует ожидать:

или так в cmd (окно командной строки Microsoft Windows) :

Интерпретатор Python теперь находится в ожидании пользовательского ввода. В будущих главах вы узнаете, для чего это интерактивное приглашение полезно. Но пока Вы подтвердили, что Python установлен в вашей системе. Чтобы выйти из интерактивного приглашения, вы можете ввести exit() и нажать Enter.

В версиях Python для Linux и Mac OS X вы также можете выйти из интерпретатора, нажав Ctrl-D .

В Windows, комбинация клавиш для выхода — Ctrl-Z , затем Enter.

Установка Flask

Следующий шаг — установить Flask, но прежде чем я расскажу об этом, я хочу рассказать вам о лучших методах, связанных с установкой пакетов Python.

В Python пакеты, такие как Flask, доступны в общем репозитории, откуда их можно загрузить и установить. Официальный репозиторий пакетов Python называется PyPI, что означает Python Package Index (также известный, как «cheese shop»). Установка пакета из PyPI очень проста, потому что у Python есть инструмент под названием pip, который выполняет эту работу (в Python 2.7 pip не входит в комплект с Python и его нужно устанавливать отдельно).

Чтобы установить пакет на свой компьютер, вы используете pip следующим образом:

Интересно, что этот метод установки пакетов не будет работать в большинстве случаев. Если ваш интерпретатор Python был установлен глобально для всех пользователей вашего компьютера, велика вероятность того, что ваша обычная учетная запись пользователя не получит разрешения на внесение в нее изменений, поэтому единственный способ выполнить вышеприведенную команду — запустить ее от имени администратора. Но даже без этого осложнения поймите, что происходит, когда вы устанавливаете пакет, как указанным выше способом. Инструмент pip загрузит пакет из PyPI, а затем добавит его в вашу папку Python. С этого момента каждый скрипт Python, который у вас есть в вашей системе, будет иметь доступ к этому пакету. Представьте ситуацию, когда вы закончили веб-приложение с использованием версии 0.11 Flask, которая была самой последней версией Flask при запуске, но теперь она была заменена версией 0.12. Теперь вы хотите запустить второе приложение, для которого вы хотели бы использовать версию 0.12, но если вы замените установленную версию 0.11, вы рискуете сломать свое старое приложение. Вы видите проблему? Было бы идеально, если бы можно было установить Flask 0.11, который будет использоваться вашим старым приложением, а также установить Flask 0.12 для Вашего нового.

Чтобы решить проблему поддержки различных версий пакетов для разных приложений, Python использует концепцию виртуальных сред. Виртуальная среда — это полная копия интерпретатора Python. Когда вы устанавливаете пакеты в виртуальной среде, общесистемный интерпретатор Python не затрагивается, только копия. Таким образом, решение иметь полную свободу для установки любых версий ваших пакетов для каждого приложения — использовать другую виртуальную среду для каждого приложения. Виртуальные среды имеют дополнительное преимущество, они принадлежат пользователю, который их создает, поэтому им не требуется учетная запись администратора.

Начнем с создания каталога, в котором будет жить проект. Я собираюсь назвать этот каталог microblog, так как это имя приложения:

Если вы используете версию Python 3, в нее включена поддержка виртуальной среды, поэтому все, что вам нужно сделать для ее создания, это:

С помощью этой команды Python запустит пакет venv , который создает виртуальную среду с именем venv . Первым venv в команде является имя пакета виртуальной среды Python, а второе — имя виртуальной среды, которое я буду использовать для этой конкретной среды. Если вы считаете, что это сбивает с толку, вы можете заменить второй venv другим именем, которое вы хотите назначить своей виртуальной среде. В общем, я создаю свои виртуальные среды с именем venv в каталоге проекта, поэтому всякий раз, когда я подключаюсь к проекту, я нахожу его соответствующую виртуальную среду.

Обратите внимание, что в некоторых операционных системах вам может понадобиться использовать python вместо python3 в приведенной выше команде. Некоторые установки используют python для релизов Python 2.x и python3 для релизов 3.x, в то время как другие отображают python в выпусках 3.x.

По завершении команды вы будете иметь каталог с именем venv , где хранятся файлы виртуальной среды.

Если вы используете любую версию Python старше 3.4 (включая выпуск 2.7), виртуальные среды не поддерживаются изначально. Для этих версий Python вам необходимо загрузить и установить сторонний инструмент virtualenv, прежде чем создавать виртуальные среды. После того, как virtualenv установлен, вы можете создать виртуальную среду со следующей командой:

Прим.переводчика: У меня установлено несколько версий Python. Я использую Python3.3. В моем случае пришлось вводить строку так:

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

Если вы используете cmd (окно командной строки Microsoft Windows), команда активации немного отличается:

Когда вы активируете виртуальную среду, конфигурация сеанса терминала изменяется так, что интерпретатор Python, хранящийся внутри нее, станет тем, который вызывается при вводе python . Кроме того, в запросе терминала включено имя активированной виртуальной среды. Изменения, внесенные в сеанс терминала, являются временными и частными для этого сеанса, поэтому они не будут сохраняться при закрытии окна терминала. Если вы одновременно работаете с несколькими терминальными окнами, отлично видно, чтобы на каждом из них были задействованы разные виртуальные среды.

Теперь, когда вы создали и активировали виртуальную среду, вы можете, наконец, установить в нее Flask:

Если вы хотите проверить, что в вашей виртуальной среде установлен Flask, вы можете запустить интерпретатор Python и импортировать Flask в него:

Если этот импорт не дает вам никаких ошибок, вы можете поздравить себя, так как Flask установлен и готов к использованию.

Flask приложение «Привет, мир»

Если вы зайдете на сайт Flask, вас приветствует очень простое примерное приложение с пятью строками кода. Вместо того, чтобы повторять этот тривиальный пример, я покажу вам немного более сложный, который даст вам хорошую базовую структуру для написания больших приложений.

Приложение будет существовать в виде пакета.

Прим.переводчика: Пакет — это коллекция модулей.

В Python подкаталог, содержащий файл __init__.py , считается пакетом и может быть импортирован. Когда вы импортируете пакет, __init__.py выполняет и определяет, какие символы предоставляют пакет для внешнего мира.

Давайте создадим пакет под названием app , в котором будет размещено приложение. Убедитесь, что вы находитесь в каталоге microblog , а затем выполните следующую команду:

__init__.py для пакета приложения будет содержать следующий код:

Сценарий выше просто создает объект приложения как экземпляр класса Flask, импортированного из пакета flask. Переменная __name__ , переданная в класс Flask, является предопределенной переменной Python, которая задается именем модуля, в котором она используется. Flask использует расположение модуля, переданного здесь как отправную точку, когда ему необходимо загрузить связанные ресурсы, такие как файлы шаблонов, которые я расскажу в главе 2. Для всех практических целей передача __name__ почти всегда будет настраивать flask в правильном направлении. Затем приложение импортирует модуль routes , который еще не существует.

Один из аспектов, который может показаться запутанным вначале, состоит в том, что существуют два объекта с именем app. Пакет приложения определяется каталогом приложения и сценарием __init__.py и указан в инструкции routes импорта приложения. Переменная app определяется как экземпляр класса Flask в сценарии __init__.py , что делает его частью пакета приложения.

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

Так что же входит в модуль routes ? routes — это разные URL-адреса, которые приложение реализует. В Flask обработчики маршрутов приложений записываются как функции Python, называемые функциями просмотра. Функции просмотра сопоставляются с одним или несколькими URL-адресами маршрутов, поэтому Flask знает, какую логику следует выполнять, когда клиент запрашивает данный URL-адрес.

Вот ваша первая функция просмотра, которую вам нужно написать в новом модуле с именем app/routes.py :

Эта функция просмотра на самом деле довольно проста, она просто возвращает приветствие в виде строки. Две странные строки @app.route над функцией — декораторы, уникальная особенность языка Python. Декоратор изменяет функцию, которая следует за ней. Общий шаблон с декораторами — использовать их для регистрации функций как обратных вызовов для определенных событий. В этом случае декоратор @app.route создает связь между URL-адресом, заданным как аргумент, и функцией. В этом примере есть два декоратора, которые связывают URL-адреса / и /index с этой функцией. Это означает, что когда веб-браузер запрашивает один из этих двух URL-адресов, Flask будет вызывать эту функцию и передавать возвращаемое значение обратно в браузер в качестве ответа. Если вам кажется, что это еще не имеет смысла, это будет недолго, пока вы запустите это приложение.

Чтобы завершить приложение, вам нужно создать сценарий Python на верхнем уровне, определяющий экземпляр приложения Flask. Давайте назовем этот скрипт microblog.py и определим его как одну строку, которая импортирует экземпляр приложения:

Помните два объекта app ? Здесь вы можете видеть оба вместе в одном предложении. Экземпляр приложения Flask называется app и входит в пакет app. from app import app импортирует переменную app , входящую в пакет app. Если вы считаете это запутанным, вы можете переименовать либо пакет, либо переменную во что то другое.

Чтобы убедиться, что вы все делаете правильно, ниже приведена диаграмма структуры проекта:

Верьте или нет, но первая версия приложения завершена! Прежде чем запускать его, Flask нужно сообщить, как его импортировать, установив переменную среды FLASK_APP :

Если вы используете Microsoft Windows, используйте команду 'set' вместо 'export' в команде выше.

Готовы ли вы быть потрясены? Вы можете запустить свое первое веб-приложение со следующей командой:

Прим.переводчика: Я был потрясен поскольку получил ошибку кодировки. Если у вас версия Python старше 3.6 вас скорее всего ждет сюрприз. Типа:

В моем случае виноваты кириллические символы ПК в имени компьютера. Заменил на PK и все заработало. Виноват модуль socket

Действительно все заработало:


Что бы написать по русски "Привет, Мир!" потребуется скорректировать
модуль routes.py


Когда вы закончите играть с сервером, вы можете просто нажать Ctrl-C, чтобы остановить его.

Поздравляем, вы совершили первый большой шаг, чтобы стать веб-разработчиком!

Прежде всего, нам нужно установить модуль flask. Вы можете сделать это либо из командной строки, либо с помощью IDE. Я использую PyCharm Community Edition 2017.2. Итак, я установлю Flask с помощью этой IDE.

Затем откройте PyCharm, щелкните файл> настройки. Затем разверните проект и щелкните Project Interpreter. Вы увидите следующее:

Установка Flask в Python

Я уже установил Flask, поэтому в списке отображается Flask. Вы должны нажать кнопку + в правой части окна.

После этого появится окно Доступный пакет. В строке поиска введите Flask, и он появится.

Нажмите на Flask и в нижней части окна нажмите Установить. Flask будет установлен на ваш питон, если вы подключены к Интернету.

Вы можете установить модуль flask, используя команду pip через команду ниже.

Итак, наша установка модуля flask завершена. Теперь приступим к кодированию.

Первая веб-страница

Создайте новый проект с именем FlaskTutorial. Затем я создаю файл с именем Main.py. В этом файле у нас есть следующий сегмент кода:

Затем запустите файл, и в журнале консоли вы увидите следующее:

Пример flask

Итак, это наша основная веб-страница, обслуживаемая Python.

Пояснение

В самой первой строке мы импортировали класс Flask модуля flask.

Тогда @ app.route() – это декоратор, дополняющий функцию index().

Функция index() возвращает строку, которую мы видим на веб-странице. Здесь мы также можем вернуть html-код. Наконец, мы проверяем, работает ли __main__ напрямую или нет. Если да, запустите приложение. Потом видим результат в браузере.

Инструкция по Flask

Теперь давайте посмотрим на другой пример, в котором мы отправим некоторые данные в форму, а затем отобразим их на следующей странице.

отображение данных

Библиотека flask

Теперь напишем код success.html, как показано ниже.

Обратите внимание, что в теге body есть двойная фигурная скобка. В этом электронном письме содержится значение, которое отправляется со страницы входа. Все остальное – как обычный html-код.

Теперь снова вернемся к файлу Main.py, мы должны написать следующий код.

Обратите внимание, что мы добавили еще один маршрут с именем FlaskTutorial. Он принимает другой аргумент с именем methods. В функции возврата мы отправили электронное письмо с именем аргумента, которое мы получаем из текстового поля login.html с помощью action = / FlaskTutorial, и мы встроили его в файл success.html.

Пример работы
Работа с библиотекой

Вот как вы можете отправлять данные из одного HTML-файла в другой HTML-файл с помощью фреймворка Flask.


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

Есть вопросы по Python?

На нашем форуме вы можете задать любой вопрос и получить ответ от всего нашего сообщества!

Telegram Чат & Канал

Вступите в наш дружный чат по Python и начните общение с единомышленниками! Станьте частью большого сообщества!

Паблик VK

Одно из самых больших сообществ по Python в социальной сети ВК. Видео уроки и книги для вас!

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

Содержание статьи

Настройка проекта на Flask

Для основной настройки проекта, вам нужно быть знакомым со следующими инструментами:

  • Virtualenv;
  • Flask;
  • git/Github;
  • Heroku (основы).

Сперва настроим рабочую директорию:

Инициализиуем новый git репозиторий внутри нашей рабочей директории:

Устанавливаем среду окружения для использования в нашем веб-приложении:

Теперь вы можете увидеть (env) с левой стороны терминала, это указывает на то, что сейчас вы работаете в виртуальной среде.

Чтобы покинуть виртуальную среду просто выполните в терминале команду deactivate и когда захотите продолжить работу над проектом, запустите source env/bin/activate .

Затем нам нужно будет создать базовую структуру для нашего приложения. Создадим следующие файлы в папку "flask-by-example" :

В итоге, будет создана следующая структура из файлов:

Не забудьте обновить файл .gitignore из репозитория.

На всякий случай, стоит обновить pip через команду:

Устанавливаем Flask через pip:

Добавляем установленные библиотеки в наш файл requirements.txt :

Открываем файл app.py в текстовом редакторе и добавляем следующий код:

Затем нужно настроить Heroku для запуска веб-приложения на нем.

Установка Heroku для работы с Flask

Если вы этого еще не сделали, создайте аккаунт на Heroku, скачайте и установите Heroku Toolbelt и затем в терминале запустите команду для входа на Heroku:

Форма для входа на Heroku

После удачного входа на Heroku, нужно создать файл Procfile в вашей корневой директории проекта:

Добавляем следующую строку в новый созданный файл Procfile:

Не забудьте добавить модуль gunicorn в файл зависимостей requirments.txt :

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

Просто создаем файл под названием runtime.txt со следующим содержимым:

Загрузим наши изменения через git (также можно разместить на Github), затем создаем две новые веб-приложения на Heroku.

Первое веб-приложение для продакшена:

Второе веб-приложение для стейджинга:

Названия из примера уже заняты, поэтому вы должны выбрать свои собственные уникальные названия.

Я предлагаю использовать такой шаблон названия приложения:

В моем случае это:

В моем случае был получен вот такой результат в терминале:

Добавим новые приложения в git remote. Не забудьте назвать один remote pro (для продакшена), а другой stage (для стейджинга):

Подготавливаем все файлы для комита:

Теперь можно загрузить оба приложения для работы в режиме реального времени на Heroku:

  • Для стейджинга: git push stage master
  • Для продакшена: git push pro master

Вот так выглядит результат в терминале у меня:

Writing objects : 100 % ( 8 / 8 ) , 1015 bytes | 1015.00 KiB / s , done . remote : -- -- -> Installing pip 20.1.1 , setuptools 47.1.1 and wheel 0.34.2 remote : Downloading click - 7.1.2 - py2 .py3 - none - any .whl ( 82 kB ) remote : Downloading Flask - 1.1.2 - py2 .py3 - none - any .whl ( 94 kB ) remote : Downloading gunicorn - 20.0.4 - py2 .py3 - none - any .whl ( 77 kB ) remote : Downloading itsdangerous - 1.1.0 - py2 .py3 - none - any .whl ( 16 kB ) remote : Downloading Jinja2 - 2.11.2 - py2 .py3 - none - any .whl ( 125 kB ) remote : Downloading MarkupSafe - 1.1.1 - cp38 - cp38 - manylinux1_x86_64 .whl ( 32 kB ) remote : Downloading Werkzeug - 1.0.1 - py2 .py3 - none - any .whl ( 298 kB ) remote : Installing collected packages : click , MarkupSafe , Jinja2 , Werkzeug , itsdangerous , Flask , gunicorn remote : Successfully installed Flask - 1.1.2 Jinja2 - 2.11.2 MarkupSafe - 1.1.1 Werkzeug - 1.0.1 click - 7.1.2 gunicorn - 20.0.4 itsdangerous - 1.1.0

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

Сделаем изменение в нашем веб-приложении и загрузим их только на стейджинге (тестовой версии нашего веб-приложения):

Запустите веб-приложение локально и убедитесь, что все работает:

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

Убедитесь, что ваши изменения зафиксированы в git:

Затем, загружаем все изменения на стейджинг (приложение для предварительного тестирования):

У меня получился вот такой вывод:

Writing objects : 100 % ( 3 / 3 ) , 460 bytes | 460.00 KiB / s , done . remote : -- -- -> No change in requirements detected , installing from cache remote : -- -- -> Installing pip 20.1.1 , setuptools 47.1.1 and wheel 0.34.2

Теперь при переходу в среду стейджинга вы сможете использовать новый URL, то есть /mike и увидите Привет, mike! в зависимости от того, какое имя вы поместили в URL.

В моем случае это:

Однако, если вы попробуете то же самое на продакшен сайте, вы получите ошибку. Таким образом, мы можем создавать веб-приложения и тестировать их в среде стейджинга, а затем запускать их на продакшен.

Если все хорошо, давайте загрузим изменения и для продакшена:

Теперь та же функциональность доступна на продакшен сайте.

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

Создаем файл конфигурации веб-приложения

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

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

Добавим файл config.py в корень проекта:

В файле конфигурации мы собираемся позаимствовать кое-что из того, как настраивается конфигурация в Django. У нас будет базовый класс Config , от которого наследуются другие классы конфигурации. Затем при необходимости мы импортируем соответствующий класс.

Добавьте следующей код в созданный файл config.py :

basedir = os.path . abspath ( os.path . dirname ( __file__ ) )

Мы импортировали модуль os и затем создали переменную basedir значение которой является полным путем к файлу config.py . Затем мы создаем базовый класс Config с некоторыми основными настройками, которые будут наследовать другие классы.

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

  • локальной на нашем компьютере;
  • стейджингом (приложение только для тестирования);
  • продакшеном (рабочее приложение для пользователей).

Flask: Настройка локальной среды

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

Этот модуль позволяет создавать команды, которые будут запускаться каждый раз когда мы заходим в папку нашего приложения. Для того чтобы это реализовать, нам нужно установить модуль autoenv глобально т.е. для всей системы.

Сначала выходим из виртуальной среды в терминале, устанавливаем глобально модуль autoenv и создаем файл .env :

Читайте также: