Краткое руководство. Создание первого веб-приложения Python с помощью Visual Studio
Область применения:Visual Studio Visual Studio для Mac
Visual Studio Code ![]()
В рамках этого краткого (на 5–10 минут) знакомства с Visual Studio в качестве IDE для Python создается простое веб-приложение Python на платформе Flask. Вы создадите проект при помощи дискретных действий, которые помогут ознакомиться с базовыми функциями Visual Studio.
Установите Visual Studio бесплатно со страницы скачиваемых материалов Visual Studio, если еще не сделали этого. В установщике выберите рабочую нагрузку Разработка на Python.
Установите Visual Studio бесплатно со страницы скачиваемых материалов Visual Studio, если еще не сделали этого. В Visual Studio Installer выберите рабочую нагрузку Разработка на Python, а в сведениях об установке — Веб-поддержка в Python.

Создание проекта
Ниже приведены инструкции по созданию пустого проекта, который служит контейнером для приложения:
- Откройте Visual Studio 2019.
- На начальном экране выберите Создать новый проект.
- В диалоговом окне Создать новый проект введите «Python веб» в поле поиска вверху, выберите Веб-проект в среднем списке и нажмите Далее:
Если вы не видите шаблоны проектов Python, запустите установщик Visual Studio, выберите «Дополнительно>изменить«, выберите рабочую нагрузку разработки Python, а затем нажмите кнопку «Изменить«.
- В следующем диалоговом окне Настроить новый проект введите HelloPython в качестве имени проекта, укажите расположение и выберите Создать. (Имя решения автоматически устанавливается в соответствии с именем проекта.)

- Новый проект откроется в обозревателе решений в правой области. Проект пока пуст, так как он не содержит других файлов.

- Откройте Visual Studio 2022.
- На начальном экране выберите Создать новый проект.
- В диалоговом окне Создание проекта введите «Python web» в поле поиска вверху. Выберите Веб-проект из списка, а затем нажмите Далее:
Если вы не видите шаблоны веб-проекта Python, выберите пункт Средства>Get Tools and Features (Получить средства и компоненты), чтобы запустить Visual Studio Installer. В Installer выберите рабочую нагрузку Разработка на Python, а в разделе Сведения об установке щелкните Веб-поддержка в Python. Затем нажмите кнопку Изменить. - В диалоговом окне Настроить новый проект введите «HelloPython» в качестве имени проекта, укажите расположение, а затем выберите Создать. Поле Имя решения автоматически обновится в соответствии с именем проекта.

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

Вопрос. В чем преимущество создания проекта в Visual Studio для приложений Python?
Ответ. Приложения Python обычно определяются только с помощью папок и файлов, однако такая простая структура может стать утомительной по мере увеличения размеров приложений. Приложения могут содержать автоматически созданные файлы, JavaScript для веб-приложений и другие компоненты. Проект Visual Studio помогает управлять этими сложными моментами.
Проект, PYPROJ-файл, определяет все исходные файлы и файлы содержимого, связанные с проектом. PYPROJ-файл содержит сведения о сборке для каждого файла, хранит информацию для интеграции с системами управления версиями и помогает упорядочить ваше приложение в виде логических компонентов.
Вопрос. Что представляет собой «решение», которое отображается в обозревателе решений?
Ответ. Решение Visual Studio — это контейнер, который помогает управлять одним или несколькими связанными проектами в виде группы. В решении хранятся параметры конфигурации, которые не относятся к конкретному проекту. Проекты в решении также могут ссылаться друг на друга. Например, при запуске проекта приложения Python может автоматически создаваться второй проект, например расширение C++, используемое приложением Python.
Установка библиотеки Flask
Веб-приложения на Python почти всегда используют одну из множества доступных библиотек Python для обработки низкоуровневых процессов, таких как маршрутизация веб-запросов и формирование ответов. Visual Studio предоставляет множество шаблонов для веб-приложений. Позже в этом кратком руководстве вы используете один из этих шаблонов.
А сейчас выполните следующие шаги, чтобы установить библиотеку Flask в глобальном окружении по умолчанию, которое Visual Studio использует для этого проекта.
- Разверните в проекте узел Окружения Python, чтобы увидеть среду по умолчанию для проекта.

- Щелкните правой кнопкой мыши среду и выберите пункт «Управление пакетами Python. «. Эта команда открывает окно «Среды Python» на вкладке «Пакеты» (PyPI).
- В поле поиска введите «flask». Если Flask отображается под полем поиска, этот шаг можно пропустить. В противном случае выберите Запустить команду: pip install flask. Подтвердите запросы на права администратора и наблюдайте за ходом выполнения в окне Вывод в Visual Studio. (Запрос на повышение прав выводится в том случае, если папка пакетов для глобальной среды находится в защищенной области, такой как C:\Program Files.)

- Разверните в проекте узел Окружения Python, чтобы увидеть среду по умолчанию для проекта.

- Щелкните окружение правой кнопкой мыши и выберите Открыть пакеты Python. Эта команда открывает вкладку Пакеты (PyPI) в окне Окружения Python.
- В поле поиска введите «flask». Если Flask отображается под полем поиска, этот шаг можно пропустить. В противном случае выберите Выполнить команду: pip install flask.
Запрос на повышение прав отображается, если папка пакетов глобального окружения находится в защищенной области, например в папке C:\Program Files. Подтвердите запросы на права администратора. Следите за ходом выполнения в окне Вывод в Visual Studio.
После установки библиотека появится в среде в Обозревателе решений. Это означает, что ее можно использовать в коде Python.


Вместо установки библиотек в глобальном окружении разработчики обычно создают «виртуальное окружение», в котором устанавливаются библиотеки для определенного проекта. Шаблоны Visual Studio обычно обеспечивают такую возможность, как описано в кратком руководстве по созданию проекта Python с помощью шаблона.
Вопрос. Где можно подробнее узнать о других доступных пакетах Python?
Ответ. Перейдите к странице индекса пакетов Python.
Добавление файла кода
Теперь можно добавить немного кода на Python, чтобы реализовать простейшее веб-приложение.
- Щелкните проект правой кнопкой мыши в Обозреватель решений и выберите «Добавить>новый элемент«.
- В открывшемся диалоговом окне выберите элемент Пустой файл Python, присвойте файлу имя app.py и нажмите кнопку Добавить. Файл автоматически откроется в редакторе кода Visual Studio.
- Скопируйте следующий код и вставьте его в app.py:
from flask import Flask # Create an instance of the Flask class that is the WSGI application. # The first argument is the name of the application module or package, # typically __name__ when using a single module. app = Flask(__name__) # Flask route decorators map / and /hello to the hello function. # To add other resources, create functions that generate the page contents # and add decorators to define the appropriate resource locators for them. @app.route('/') @app.route('/hello') def hello(): # Render the page return "Hello Python!" if __name__ == '__main__': # Run the app server on localhost:4449 app.run('localhost', 4449)
- Щелкните проект правой кнопкой мыши в Обозреватель решений и выберите «Добавить>новый элемент«.
- В появившемся диалоговом окне выберите Пустой. В качестве имени введите app.py, а затем нажмите кнопку Добавить. Файл автоматически откроется в редакторе кода Visual Studio.
- Скопируйте следующий код и вставьте его в app.py:
from flask import Flask # Create an instance of the Flask class that is the WSGI application. # The first argument is the name of the application module or package, # typically __name__ when using a single module. app = Flask(__name__) # Flask route decorators map / and /hello to the hello function. # To add other resources, create functions that generate the page contents # and add decorators to define the appropriate resource locators for them. @app.route('/') @app.route('/hello') def hello(): # Render the page return "Hello Python!" if __name__ == '__main__': # Run the app server on localhost:4449 app.run('localhost', 4449)
Как вы могли заметить, в диалоговом окне Добавить>Создать элемент отображается много других типов файлов, которые можно добавить в проект Python, в том числе класс Python, пакет Python, модульный тест Python, файлы web.config и многое другое. Как правило, эти шаблоны элементов прекрасно подходят для быстрого создания файлов при помощи полезного стандартного кода.
Вопрос. Где можно подробнее узнать о Flask?
Ответ. Ознакомьтесь с документацией по Flask. Начать можно с краткого руководства по Flask.
Выполнение приложения
- В Обозревателе решений щелкните правой кнопкой мыши файл app.py, а затем в раскрывающемся меню выберите Задать как файл запуска. С помощью этой команды файл кода задается как запускаемый в Python при запуске приложения.


Вопрос. В чем разница между командами «Запустить без отладки» и «Начать отладку»?
Ответ. Команда Начать отладку используется, чтобы запустить приложение в контексте отладчика Visual Studio. С помощью отладчика можно устанавливать точки останова, проверять переменные и поэтапно выполнять код строка за строкой. С отладчиком приложения могут работать медленнее, так как для отладки используются различные обработчики.
Команда Запустить без отладки запускает приложение напрямую, как если бы оно запускалось из командной строки без контекста отладки. Команда Запустить без отладки также автоматически запускает браузер и переходит по URL-адресу, указанному на вкладке Отладка свойств проекта.
Следующие шаги
Поздравляем с запуском вашего первого приложения Python из Visual Studio. Вы немного узнали об использовании Visual Studio в качестве интегрированной среды разработки Python!
Так как приведенные в этом руководстве инструкции довольно общие, вы, вероятно, догадались, что их можно и нужно автоматизировать. Такая автоматизация выполняется при помощи шаблонов проектов Visual Studio. Изучите краткое руководство Создание проекта Python с использованием шаблона, чтобы узнать, как создать веб-приложение, похожее на описанные в этой статье, но с меньшим количеством шагов.
Чтобы перейти к более полному учебнику по работе с Python в Visual Studio, в том числе к использованию интерактивного окна, отладки, визуализации данных и работы с Git, см. раздел Учебник. Начало работы с Python в Visual Studio.
Более подробно ознакомиться с возможностями Visual Studio можно по приведенным ниже ссылкам.
- Сведения о шаблонах веб-приложений Python в Visual Studio.
- Сведения об отладке Python
- Общие сведения об интегрированной среде разработки Visual Studio.
Создаём веб-приложение с помощью Python
Создание веб-приложений с использованием Python представляет собой мощный и эффективный способ разработки функциональных и динамических веб-сайтов. В статье рассмотрим процесс создания веб-приложения с помощью Python и расскажем о ключевых аспектах этого процесса.
Подготовлено_выпускником —>

Получите востребованную профессию бесплатно. Обучение от 1 до 4 месяцев
Веб-разработка и Python
Python — универсальный и гибкий язык программирования, который идеально подходит для веб-разработки. Он обладает простым и понятным синтаксисом, а также широким набором инструментов и библиотек, которые делают его отличным выбором для создания веб-приложений.
Язык Python поддерживает различные веб-технологии и позволяет разработчикам создавать высококачественные и масштабируемые веб-сайты.
Python и фреймворки
Одним из ключевых преимуществ Python в веб-разработке является наличие множества фреймворков.
Фреймворки — набор инструментов и библиотек, которые упрощают разработку веб-приложений. Некоторые из наиболее популярных фреймворков Python: Django, Flask и Pyramid. Эти фреймворки предоставляют различные возможности, такие как маршрутизация URL, обработка запросов и шаблонизация, что позволяет разработчикам более эффективно создавать и поддерживать веб-приложения.
Установка библиотек
Установка Python выполняется с официального веб-сайта Python. Для установки библиотек и фреймворков Python рекомендуется использовать инструмент управления пакетами, такой как pip.
При помощи pip вы можете легко установить необходимые библиотеки и фреймворки, например, командой pip install flask для установки фреймворка Flask. Это позволит использовать все возможности фреймворка при разработке вашего веб-приложения.
Разработка веб-приложения
Процесс разработки веб-приложения с использованием Python включает несколько ключевых шагов. Сначала вы должны определить цели и требования вашего веб-приложения. Это поможет создать план разработки и структуру приложения. Затем вы можете приступить к проектированию базы данных, если приложение требует хранения данных.
После этого вы можете приступить к созданию компонентов веб-приложения, таких как модели данных, представления (views) и шаблоны (templates). Модели данных определяют структуру и отношения между данными, представления определяют логику обработки запросов и отображения данных, а шаблоны отвечают за визуальное представление данных на веб-странице.
Python-фреймворки, такие как Django, предлагают готовые инструменты и абстракции для обработки этих компонентов. Например, Django предоставляет ORM (Object-Relational Mapping), который позволяет вам взаимодействовать с базой данных с помощью объектов Python, а также систему маршрутизации URL, которая помогает определить, какой код будет обрабатывать каждый запрос.
Вам потребуется создать статические файлы, такие как CSS-стили и JavaScript, для обеспечения внешнего вида и функциональности вашего веб-приложения. Python позволяет легко интегрировать эти файлы в приложение и использовать их вместе с шаблонами для создания интерактивных и привлекательных пользовательских интерфейсов.

Запуск веб-приложения
Python предлагает различные варианты веб-серверов, включая встроенные серверы во многих фреймворках, таких как Flask или Django, а также сторонние серверы, такие как Gunicorn или uWSGI. Выбор веб-сервера зависит от ваших потребностей в производительности и масштабируемости.
После запуска веб-сервера ваше веб-приложение будет доступно по определенному адресу (например, localhost:8000). Вы можете открыть его веб-браузере и убедиться, что ваше веб-приложение работает корректно и отображает данные и функциональность, которые вы разработали. Вы также можете провести тестирование приложения, чтобы убедиться в его надежности и безопасности.
При разработке веб-приложения с использованием Python важно учитывать некоторые особенности. Веб-разработка требует знания HTML, CSS и JavaScript, поэтому рекомендуется ознакомиться с этими технологиями. Кроме того, важно следовать лучшим практикам безопасности при разработке веб-приложений, чтобы защитить данные пользователей и предотвратить возможные уязвимости.
Освоить разработку и начать карьеру в IT вы можете на бесплатном обучении в проекте «Содействие занятости».

Получите востребованную профессию бесплатно. Обучение от 1 до 4 месяцев
Python и разработка простого веб-приложения, использующего технологии машинного обучения
Тот, кто занимается машинным обучением (Machine Learning, ML), обычно, реализуя различные проекты, выполняет следующие действия: сбор данных, их очистка, разведочный анализ данных, разработка модели, публикация модели в локальной сети или в интернете. Вот хорошее видео, в котором можно узнать подробности об этом.

Жизненный цикл проекта в сфере машинного обучения
Этап публикации модели завершает жизненный цикл ML-проектов. Он так же важен для дата-сайентистов и специалистов по машинному обучению, как и другие этапы. Обычные подходы к публикации моделей предусматривают использование универсальных фреймворков, таких, как Django или Flask. Главные проблемы тут заключаются в том, что для применения подобных инструментов требуются особые знания и навыки, и в том, что работа с ними может потребовать немалых затрат времени.
Автор статьи, перевод которой мы сегодня публикуем, хочет рассказать о том, как, используя Python-библиотеки streamlit, pandas и scikit-learn, создать простое веб-приложение, в котором применяются технологии машинного обучения. Он говорит, что размер этого приложения не превышает 50 строк. Статья основана на этом видео, которое можно смотреть параллельно с чтением. Инструменты, которые будут здесь рассмотрены, кроме прочего, позволяют ускорить и упростить развёртывание ML-проектов.
Обзор модели, определяющей вид цветка ириса
Сегодня мы создадим простое веб-приложение, использующее технологии машинного обучения. Оно будет классифицировать цветки ириса из выборки Фишера, относя их к одному из четырёх видов: ирис щетинистый (iris setosa), ирис версиколор (iris versicolor), ирис виргинский (iris virginica). Возможно, вы уже видели множество ML-примеров, построенных на основе этого знаменитого набора данных. Но, надеюсь, то, что я тут буду рассматривать ещё один такой пример, вам не помешает. Ведь этот набор — он как «lorem ipsum» — классический бессмысленный текст-заполнитель, который вставляют в макеты страниц.
Нам, чтобы построить модель и опубликовать её где-нибудь, понадобятся библиотеки streamlit, pandas и scikit-learn. Взглянем на общую схему проекта. Он будет состоять из двух больших частей: фронтенд и бэкенд.
Во фронтенд-части приложения, а именно, на веб-странице, будет боковая панель, находящаяся слева, в которой можно будет вводить входные параметры модели, которые связаны с характеристиками цветков ириса: длина лепестка (petal length), ширина лепестка (petal width), длина чашелистика (sepal length), ширина чашелистика (sepal width). Эти данные будут передаваться бэкенду, где предварительно обученная модель будет классифицировать цветки, используя заданные характеристики. Фактически, речь идёт о функции, которая, получая характеристики цветка, возвращает его вид. Результаты классификации отправляются фронтенду.
В бэкенд-части приложения то, что ввёл пользователей, сохраняется в датафрейме, который будет использоваться в виде тестовых данных для модели. Потом будет построена модель для обработки данных. В ней будет применяться алгоритм «случайный лес» из библиотеки scikit-learn. И наконец, модель будет применена для классификации данных, введённых пользователем, то есть — для определения вида цветка. Кроме того, вместе со сведениями о виде цветка, будут возвращаться и данные о прогностической вероятности. Это позволит нам определить степень достоверности результатов классификации.
Установка библиотек
Как уже было сказано, здесь мы будем пользоваться тремя библиотеками: streamlit , pandas и scikit-learn . Установить их можно, пользуясь pip install :
pip install streamlit pip install pandas pip install -U scikit-learn
Разработка веб-приложения
Теперь напишем код приложения. Проект у нас довольно скромный. Он состоит из менее чем 50 строк кода. А если точнее — то их тут всего 48. Если же этот код «уплотнить», избавившись от комментариев и пустых строк, то размер текста программы сократится до 36 строк.
import streamlit as st import pandas as pd from sklearn import datasets from sklearn.ensemble import RandomForestClassifier st.write(""" # Simple Iris Flower Prediction App This app predicts the **Iris flower** type! """) st.sidebar.header('User Input Parameters') def user_input_features(): sepal_length = st.sidebar.slider('Sepal length', 4.3, 7.9, 5.4) sepal_width = st.sidebar.slider('Sepal width', 2.0, 4.4, 3.4) petal_length = st.sidebar.slider('Petal length', 1.0, 6.9, 1.3) petal_width = st.sidebar.slider('Petal width', 0.1, 2.5, 0.2) data = features = pd.DataFrame(data, index=[0]) return features df = user_input_features() st.subheader('User Input parameters') st.write(df) iris = datasets.load_iris() X = iris.data Y = iris.target clf = RandomForestClassifier() clf.fit(X, Y) prediction = clf.predict(df) prediction_proba = clf.predict_proba(df) st.subheader('Class labels and their corresponding index number') st.write(iris.target_names) st.subheader('Prediction') st.write(iris.target_names[prediction]) #st.write(prediction) st.subheader('Prediction Probability') st.write(prediction_proba)
Разбор кода
Теперь разберём этот код.
▍Импорт библиотек
import streamlit as st import pandas as pd from sklearn import datasets from sklearn.ensemble import RandomForestClassifier
В этих строках мы импортируем библиотеки streamlit и pandas , назначая им, соответственно, псевдонимы st и pd . Мы, кроме того, импортируем пакет datasets из библиотеки scikit-learn ( sklearn ). Мы воспользуемся этим пакетом ниже, в команде iris = datasets.load_iris() , для загрузки интересующего нас набора данных. И наконец, тут мы импортируем функцию RandomForestClassifier() из пакета sklearn.ensemble .
▍Формирование боковой панели
st.sidebar.header('User Input Parameters')
В этой строке мы описываем заголовок боковой панели, используя функцию st.sidebar.header() . Обратите внимание на то, что тут sidebar стоит между st и header() , что и даёт полное имя функции st.sidebar.header() . Эта функция сообщает библиотеке streamlit о том, что мы хотим поместить заголовок в боковую панель.
def user_input_features(): sepal_length = st.sidebar.slider('Sepal length', 4.3, 7.9, 5.4) sepal_width = st.sidebar.slider('Sepal width', 2.0, 4.4, 3.4) petal_length = st.sidebar.slider('Petal length', 1.0, 6.9, 1.3) petal_width = st.sidebar.slider('Petal width', 0.1, 2.5, 0.2) data = features = pd.DataFrame(data, index=[0]) return features
Здесь мы объявляем функцию user_input_features() , которая берёт данные, введённые пользователем (то есть — четыре характеристики цветка, которые вводятся с использованием ползунков), и возвращает результат в виде датафрейма. Стоит отметить, что каждый входной параметр вводится в систему с помощью ползунка. Например, ползунок для ввода длины чашелистика (sepal length) описывается так: st.sidebar.slider(‘Sepal length’, 4.3, 7.9, 5.4) . Первый из четырёх входных аргументов этой функции задаёт подпись ползунка, выводимую выше него. Это, в данном случае, текст Sepal length . Два следующих аргумента задают минимальное и максимальное значения, которые можно задавать с помощью ползунка. Последний аргумент задаёт значение, выставляемое на ползунке по умолчанию, при загрузке страницы. Здесь это — 5.4 .
▍Создание модели
df = user_input_features()
Здесь датафрейм, сформированный функцией user_input_features() , которую мы только что обсудили, записывается в переменную df .
iris = datasets.load_iris()
Загрузка набора данных Iris из пакета sklearn.datasets и запись его в переменную iris .
X = iris.data
Создание переменной Х , содержащей сведения о 4 характеристиках цветка, которые имеются в iris.data .
Y = iris.target
Создание переменной Y , которая содержит сведения о виде цветка. Эти сведения хранятся в iris.target .
clf = RandomForestClassifier()
Здесь мы, пользуясь функцией RandomForestClassifier() , назначаем классификатор, основанный на алгоритме «случайный лес», переменной clf .
clf.fit(X, Y)
Тут мы обучаем модель, пользуясь функцией clf.fit() , передавая ей в качестве аргументов переменные X и Y . Суть происходящего заключается в том, что модель будет обучена определению вида цветка ( Y ) на основе его характеристик ( X ).
prediction = clf.predict(df)
Получение сведений о виде цветка с помощью обученной модели.
prediction_proba = clf.predict_proba(df)
Получение сведений о прогностической вероятности.
▍Формирование основной панели
st.write(""" # Simple Iris Flower Prediction App This app predicts the **Iris flower** type! """)
Здесь мы, пользуясь функцией st.write() , выводим текст. А именно, речь идёт о заголовке, выводимом в главной панели приложения, текст которого задан в формате Markdown. Символ # используется для указания того, что текст является заголовком. За строкой заголовка идёт строка обычного текста.
st.subheader('User Input parameters')
В этой строке, пользуясь функцией st.subheader() , мы указываем подзаголовок, выводимый в основной панели. Этот подзаголовок используется для оформления раздела страницы, в котором будет выведено содержимое датафрейма, то есть того, что было введено пользователем с помощью ползунков.
st.write(df)
Этой командой мы выводим на основную панель содержимое датафрейма df .
st.subheader('Class labels and their corresponding index number')
Данный код описывает второй подзаголовок основной панели. В этом разделе будут выведены данные о видах цветков.
st.write(iris.target_names)
Здесь, во второй раздел основной панели, выводятся названия видов цветков ( setosa , versicolor и virginica ) и соответствующие им номера ( 0 , 1 , 2 ).
st.subheader('Prediction')
Вывод третьего подзаголовка для раздела, в котором будет находиться результат классификации.
st.write(iris.target_names[prediction])
Вывод результата классификации. Стоит отметить, что содержимое переменной prediction — это номер вида цветка, выданный моделью на основе входных данных, введённых пользователем. Для того чтобы вывести название вида, используется конструкция iris.target_names[prediction] .
st.subheader('Prediction Probability')
Выводим заголовок четвёртого (и последнего) раздела основной панели. Здесь будут представлены данные о прогностической вероятности.
st.write(prediction_proba)
Вывод данных о прогностической вероятности.
Запуск веб-приложения
Код приложения сохранён в файле iris-ml-app.py . Мы готовы к тому, чтобы его запустить. Сделать это можно, выполнив следующую команду в терминале:
streamlit run iris-ml-app.py
Если всё идёт как надо, через некоторое время вы должны увидеть следующее:
> streamlit run iris-ml-app.py You can now view your Streamlit app in your browser. Local URL: http://localhost:8501 Network URL: http://10.0.0.11:8501
Через несколько секунд должно появиться окно браузера, в котором будет открыт адрес http://localhost:8501 .
То, что вы увидите, будет похоже на следующий рисунок.

Скриншот веб-приложения для классификации цветков ириса. Если щёлкнуть по стрелке, находящейся в левом верхнем углу окна, расположенного в верхней части рисунка, будет открыта боковая панель
Итоги
Можете себя поздравить: только что вы создали веб-приложение, в котором используются технологии машинного обучения. Вы вполне можете упомянуть подобное приложение в своём портфолио ML-проектов, а если хотите, можете опубликовать его на своём веб-сайте (правда, вы, вполне возможно, решите построить собственную модель, используя другие данные).
Пользуетесь ли вы библиотекой streamlit?


- Python
- машинное обучение
- разработка
Как быстро создать и развернуть веб-приложение на Python
В этой статье речь пойдет о разработке и развертывании простейшего дашборда по COVID-19 с помощью Streamlit. Streamlit — фреймворк, предназначенный для быстрого создания приложений по обработке данных путем развертывания организованного на Python пользовательского интерфейса. Streamlit не требует от разработчика предшествующего опыта (хотя практические навыки, конечно, не помешают).
Начнем с создания виртуальной среды для проекта. Затем напишем код на Python, который будет служить движком приложения. Потом воспользуемся библиотекой Streamlit, чтобы создать пользовательский интерфейс для кода на Python, и, наконец, развернем приложение. Надеюсь, это пошаговое руководство даст вам полное представление о процессе веб-разработки на Python.
Настройка виртуальной среды
Приступая к работе над проектом, первым делом надо установить виртуальную среду. Представьте себе виртуальную среду как место, пригодное для жизни вашего приложения и полностью отгороженное от остального мира.
Виртуальная среда не должна ничего знать ни о других программах, написанных вами, ни о библиотеках Python, которые вы установили. Это важно, потому что библиотеки Python, уже установленные на компьютере, могут создать проблемы для нового приложения.
Например, последняя версия пакета может сломать код из-за устаревания некоторых функций. Виртуальные среды решают эту проблему, позволяя разработчику учитывать версии используемых библиотек и отделять их от уже установленных на компьютере, что позволяет предотвратить перезапись и конфликт зависимостей.
Кроме того, виртуальная среда помогает поддерживать чистоту и организованность разработки. Приложение, вероятно, не будет использовать все библиотеки Python, установленные на компьютере. Если создавать его вне виртуальной среды, каждую библиотеку надо было бы включить в так называемый файл требований (подробнее об этом позже), необходимый для развертывания приложения. Это привело бы к значительному раздуванию кода.
Чтобы настроить виртуальную среду, откройте терминал или командную строку. Если работаете на Mac, перейдите к рабочему столу, набрав cd desktop , а для windows это будет cd C:\Users\YOUR PC USERNAME\Desktop . Затем введите mkdir streamlit_project && cd streamlit_project . В каталоге проекта создайте виртуальную среду с помощью python3 -m venv , за которым следует любое название. Обычно виртуальные среды называют .venv , но в данном примере будет virt_env . Вот как это выглядит:
python3 -m venv virt_env # Mac
python -m venv virt_env # Windows
Теперь можно активировать виртуальную среду и приступить к установке пакетов, необходимых для проекта. Чтобы активировать виртуальную среду, введите одну из следующих комбинаций в зависимости от типа операционной системы:
source virt_env/bin/activate # Mac
virt_env\Scripts\activate # WindowsПосле активации вы должны увидеть
(virt_env) .
Создание приложения
Теперь установим streamlit и другие пакеты, которые понадобятся в приложении на Python:
python3 -m pip install streamlit # Mac
python -m pip install streamlit # Windowspython3 -m pip install pandas # Mac
python -m pip install pandas # Windowspython3 -m pip install matplotlib # Mac
python -m pip install matplotlib # Windows
После установки этих пакетов скопируйте и вставьте код из Github-репозитория, сохранив его под именем covid_dashboard.py в каталоге виртуальной среды. Этот файл Python, содержащий приложение streamlit, выполняет две основные задачи.
1) Вычисляет четыре метрики.
2) Строит граф временных рядов новых случаев по штатам.
Объясню каждый раздел более подробно.
@st.cache(allow_output_mutation=True)def load_dataset(): try: df = pd.read_csv("https://raw.githubusercontent.com/nytimes/covid-19-data/master/us-counties.csv", sep=",") states = list(df['state'].unique()) except: Exception return df, states
Функция load_dataset() извлекает все данные по COVID-19 из аккаунта NYT на Github и создает список штатов США для фильтрации. Важно использовать st.cache над этой функцией, чтобы сохранить весь набор данных в памяти. В таком случае программе не придется перезагружать весь набор данных каждый раз при применении другого фильтра.
def pct_change(data, state, today):
.
Функция pct_change принимает три аргумента: набор данных по COVID-19, штат, выбранный нами в выпадающем списке и сегодняшнюю дату. Эта функция возвращает словарь с четырьмя метриками (новые случаи, изменение по случаям за 14 дней, новые смерти и изменение по смертям за 14 дней).
def chart_data(data, state):
.
def chart_data берет набор данных по COVID-19 и выбранный штат из выпадающего списка и возвращает временной ряд данных о новых случаях для выбранного штата.
Переходим к последней части кода (именно здесь вызываются функции, а данные возвращаются и отображаются в приложении). Вызываемая функция load_dataset() создает датафрейм и список штатов США. Затем создаем выпадающий список с помощью st.selectbox , добавляем к нему метку и список штатов. Добавляем логику, когда выпадающий список выбран.
Наконец, streamlit предлагает удобный способ добавления колонок и графов на веб-страницу, создавая более чистый общий формат. Главное преимущество — возможность создавать организованные и отзывчивые HTML-компоненты на чистом Python с минимальным количеством кода.
df, states = load_dataset()state_dropdown = st.selectbox('Select a State', states)if state_dropdown:data_dict = pct_change(df, state_dropdown, today)col1, col2, col3, col4 = st.columns(4)col1.markdown(f"New Cases: ")col2.markdown(f"""14-Day Change:
""", unsafe_allow_html=True)col3.markdown(f"New Deaths: ")col4.markdown(f"""% 14-Day Change:
""", unsafe_allow_html=True)chart_data = chart_data(df, state_dropdown)st.line_chart(chart_data)%
Развертывание приложения: начальные шаги
Пока созданное в виртуальной среде приложение streamlit живет только на локальном компьютере. Чтобы поделиться им со всем миром, нужно установить Git и Heroku.
Чтобы установить Git, откройте новое окно командной строки и на Mac введите:
git --version
Должно появиться всплывающее окно с дальнейшими инструкциями, позволяющее продолжить установку. Если вы пользователь Windows, используйте следующую ссылку для загрузки Git.
Чтобы установить Heroku на Mac, сначала установите Homebrew (если этого еще не сделали), а затем введите в новом окне терминала:
brew tap heroku/brew && brew install heroku
Если компьютер Mac работает на чипе M1, может произойти ошибка. Для решения проблемы воспользуйтесь страницей поддержки Apple.
Если вы пользователь Windows, используйте следующую ссылку для загрузки Heroku CLI.
После установки этих зависимостей можно опубликовать код на Github. Сначала создайте файл .gitignore , чтобы исключить файл виртуальной среды из репозитория Github, а затем измените его, введя virt_env/ (сохраните файл после внесения изменений):
(virt_env) > touch .gitignore # Mac
(virt_env) > echo.>.gitignore # Windows
Теперь инициализируйте Git в окне командной строки, где активна виртуальная среда, через git:
git init
git add -A
git commit -m "initial commit"
Войдите в аккаунт Github, создайте новый репозиторий, а затем выберите опцию Push an existing repository from the command line. Скопируйте и вставьте фрагмент кода из этой опции в командную строку, где запущена виртуальная среда.
Чтобы завершить этот этап, создайте файл требований с помощью pip freeze. Это сообщит веб-серверу, какие зависимости ему необходимы для успешного запуска приложения.
python -m pip freeze > requirements.txt
Создайте новый файл в каталоге виртуальной среды под названием setup.sh и сохраните в нем следующее:
mkdir -p ~/.streamlit/echo "\[server]\n\headless = true\n\port = $PORT\n\enableCORS = false\n\\n\" > ~/.streamlit/config.toml
Затем создайте Procfile (назовите его просто Procfile ) в каталоге виртуальной среды и сохраните в нем следующее:
web: sh setup.sh && streamlit run covid_dashboard.py
Теперь пришло время добавить файлы requirements.txt , Procfile и setup.sh в репозиторий Github:
git add -A
git commit -m "files for Heroku deployment"
git push -u origin main
Развертывание приложения на Heroku
Чтобы развернуть приложение в производственной среде, введите следующее в командной строке, где запущена виртуальная среда:
(virt_env) > heroku login
(virt_env) > heroku create
Это создаст случайное url-имя и развернет приложение, что займет 1–2 минуты. Вы должны увидеть в командной строке url, подобный приведенному здесь. Можете скопировать его в свой браузер.
Надеюсь, после прочтения этой статьи времена, когда код был заперт на вашем компьютере, уйдут в прошлое навсегда.
- Простое руководство по форматированию строк в Python с помощью f-строк
- 7 расширенных возможностей Python
- 10 ошибок, которые выдают новичков в Python
