Павло Щербуха

Logo

Персональна освітня сорінка

Розробка на Node.js, VUE.js, Python, IBM Integration Bus (App Connect Ent) , ORACLE PL/SQL
2 September 2022

Python - flask start

by Pavlo Shcherbukha

Зміст

  1. Про що цей блог

  2. Вибір інстументів розробки та налаштування середовища розробки

    2.1. Вибір фреймворку

    2.2. Вибір середовища розробки

    2.3. Вибір середовища виконання

  3. Створення початкового мінімального проекту на python Flask на Wi64

    3.1. Створити проект в Visual Studio Code

    3.2. Створення віртуального середовища

    3.3. Устанвока необхідних біблиотек

  4. Створення найпростішого скрипта для flask app та запуск applicaiton з назвою за замлвчуванням в DEVELOPENT mode

  5. Створення найпростішого скрипта для flask app та запуск applicaiton з індивідуальною назвою в DEVELOPENT mode

  6. Створення найпростішого скрипта для flask app та запуск applicaiton з індивідуальн ою назвою в режимі DEBUG

  7. Взаємодія з Git repo

  8. Висновки

Про що цей блог

Постало передімною завдання, що вимагає розробки webservice з бібліотеками, що є тільки для python, але для win платформи та для Linux. Тому прийшлося швидко вивчати Python ну і щось зразу писати. Ну а працювати все йе повинно під kubernetes платформою Openshift. Тому цей блог орієнтований на початківців, хто, можливо опинився в схожій ситуації. Більш того, мені здається, що це буде серія блогів, тому що в один все це втулити складно. Тож поїхали

Вибір інстументів розробки та налаштування середовища розробки

Вибір фреймворку

Для розробки Web Services на Python google каже, що найширше використовуються фреймоворки Django та Flask. Кому цікаво, їх порівняльні характеристики можна почитати за посиланням: Flask Vs Django: Which Python Framework to Choose?. Я вибрав Flask тому що мені потрібні маленькі сервіси, де кожен сервіс виконує свою роботу, а не масивні application. Тому я зупинився на Flask. Тимбільше, що для Node.js developer шаблон додатку чомусь дуже мені нагадав Node.js express. Тому для розробки вибрав Flask. І у мене існують обмеження зовнішнбої бібіліотеки: не вище Python 3.9.

Вибір середовища розробки

В якості середвоища розробки вибрав Visual Code Studio з плаіном Python.

pic-01

За дінком нписано, як налаштувати VSC для роботи з Flask Using Flask in Visual Studio Code і тут є корисний приклад: python-sample-vscode-flask-tutorial.

Вибір середовища виконання</p>

Тут розклад простий. Розробку та выдладку вести на win-64. Виконуватися повинно в контейнері Linux на RedHat OpenShift. В якості базового контейнера вибрано сертифікований RedHat UBI8 з адаптацією під Python 3.9, ubi8/python-39 .

Створення початкового мінімального проекту на python Flask на Wi64

Перед цим, звичайно, на машині повинно бути встановлено Python 3.9.

Створити проект в Visual Studio Code

Створив каталог та перенести з python-sample-vscode-flask-tutorial папку .vscode в ній в файлі launch.json записана конфsгурація для debug різних фраймворків на Python та launch.json settings.json де записано, що старт додатку відбувається не з загального каталогу, де установдено Python а з віртуального середовища, що індивідуальне для окремо взятого проекту. Далі потрібно створити віртуальне середовище запуску

Створення віртуального середовища

py -m venv env

, що запускається в терміналі VSC.

pic-02

В результаті виконання команди в проекті створяться каталог env, з підкаталогами pic-3

pic-03

Для перевірки, що virtual environment запуститься можна виконати в терміналі VSC:

.\env\Scripts\activate.ps1   

pic-04

Якщо виникає помилка при запуску скрипта Activate.ps1, то потрібно запустити WinShell с правами адміністратора і виконати команду

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser 

Інші рецепти не допомгли.

На цьому віртуальне середовище створено. Переходимо до інсталювання необхіних бібліотек.

Устанвока необхідних біблиотек

Процес установки необхідних бібліотек дуже схожить з Node.js

Можна ставити бібліотеки поіменно, як в цьому прикладі, інсталюємо бібліотку requests:

py -m pip install requests

А можна створити файл залежностей requirements.txt в корені проекту, та встановити всі залужності за списком. Для мене цей варіант більш прийнятний, тому що при збірці в контейнері, якраз використовується пакетна установка.

py -m pip install -r requirements.txt

Тому ствроюю проситьй набір бібілиотек в requirements.txt

Flask
requests

та запускаю

py -m pip install -r requirements.txt

pic-05

А в каталозі env\Scripts з’явився файл flask.exe

pic-06

Таким чином мінімаьне віртуальне середивище для запуска Flask application сконфігуроване.

Створення найпростішого скрипта для flask app та запуск applicaiton з назвою за замлвчуванням в DEVELOPENT mode

Створимо app.py в кореневому каталозі проекту

from flask import Flask
app = Flask(__name__)


@app.route("/")
def home():
    return "Hello, Flask This IS APP.PY!"

Та запустимо його командою:

python -m flask run

Запуститься додакток за замовчуванням: app.py

pic-07

Ну і зразу сервіс доступний по http://localhost:5000

pic-08

Створення найпростішого скрипта для flask app та запуск applicaiton з індивідуальною назвою в DEVELOPENT mode

Створимо mainprog.py в кореневому каталозі проекту

from flask import Flask
app = Flask(__name__)


@app.route("/")
def home():
    return "Hello, Flask! This is mainprog.py !"

Запустити програму з назвою, що відрізняється від app.py можна кільком методами.

  1. Задати назву головного модуля в командному рядку з ключем –app
   python -m flask --app mainprog.py  run 

pic-09

  1. Шляхом задання env змінної FLASK_APP

потрібно в терміналі WSC встановити

 $env:FLASK_APP = "mainprog.py"

Переглянути зачення можна командою:


   $env:FLASK_APP

SET FLASK_APP=mainprog.py

echo %FLASK_APP%

ну і запустити flask

python -m flask run

pic-10

pic-11

Створення найпростішого скрипта для flask app та запуск applicaiton з індивідуальн ою назвою в режимі DEBUG

Для запусу в режимі DEBUG потрібно внести конфігурацію в файл .vscode/launch.json в розділ Python: Flask

        {
            "name": "Python: Flask",
            "type": "python",
            "request": "launch",
            "module": "flask",
            "env": {
                "FLASK_APP": "mainprog.py",
                "FLASK_ENV": "development",
                "FLASK_DEBUG": "0",
                "DB_NAME": "ORACLE-1234"
            },
            "args": [
                "run",
                "--no-debugger",
                "--no-reload"
            ],
            "jinja": true
        },


Далі переключаємося в режим DEBUG і запускаємо додаток.

  1. Для вибору режима DEBUG переходимо на піктограму

pic-12

  1. Для вибору типу запуску натискаємо на випадаючий список та вибираємо Flask

pic-13

  1. Запустити програму

pic-14

3.1. При ПЕРШОМУ запуску вас просить вибрати інтерпритатор. То потрібно вибирати інтерпритетор віртуального середовища:

pic-15

Ну і в результаті видно, що програма стартонула і навіть зупинилася на breakpint.

pic-16

Аде, зазвичай, в додаток потрібно передавати env-змінні, що параметризують його роботу. Під час конфігурації режиму DEBUG була додана змінна ** “DB_NAME”: “ORACLE-1234”. Спробуємо її вичатити та повернути її значення у відповіді. Для цього трохи змінемо файл **mainprog.py

import os
from flask import Flask

app = Flask(__name__)


@app.route("/")
def home():

    dbname=os.environ.get('DB_NAME');
    
    if dbname==None:
        return "Hello, Flask! This is mainprog.py ! ENV DB_NAME IS NOT DEFINED"
    else:    
        return "Hello, Flask! This is mainprog.py ! ENV DB_NAME =" + dbname

І вуаля, значення змінної отримано!

pic-17

Взаємодія з Git repo

Якщо працюємо з Git реазторієм, то потрібно налаштувати файл .gitignore щоб не завантажувати в Git біділіотеки, тимчасові файли і таке інше. Взяв з прикладу python-sample-vscode-flask-tutorial. Мені він здався найбільш універсальним.

Висновки

Це елементарні приклади для початківця щоб розгорнути середовище розробки та перевірити його працездатність. Сам репозиторій з прикладом знаходиться за лінком: py-flask-app-smpl

tags: