$ sudo teach IT

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

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

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

В этом уроке мы познакомимся с GitHub, научимся подготавливать проект к публикации, разберём работу с requirements.txt, узнаем, зачем нужны secrets, и опубликуем приложение через Streamlit Cloud.

К концу урока наш dashboard станет полноценным web-приложением, доступным через интернет.

Что вы узнаете в рамках статьи

В этом уроке мы рассмотрим процесс публикации Streamlit-приложения.

Мы научимся:

  • загружать проект на GitHub;
  • создавать файл requirements.txt;
  • работать с секретными данными;
  • публиковать приложения через Streamlit Cloud;
  • выполнять базовую настройку deployment;
  • получать публичную ссылку на приложение.

Ключевые термины

  • GitHub — платформа для хранения и совместной разработки проектов.
  • Repository (репозиторий) — хранилище файлов проекта.
  • Deployment (деплой) — публикация приложения на сервере.
  • Streamlit Cloud — облачная платформа для размещения Streamlit-приложений.
  • requirements.txt — файл со списком используемых библиотек.
  • Secrets — конфиденциальные данные, которые нельзя публиковать в репозитории.

Почему нельзя просто отправить проект

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

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

GitHub как основа публикации

Большинство современных сервисов деплоя работают напрямую с GitHub. Идея очень простая. Сначала проект загружается в репозиторий. После этого облачный сервис получает доступ к исходному коду и автоматически запускает приложение. Поэтому первым шагом обычно становится создание репозитория.

Подготовка проекта к публикации

Поскольку вы уже знакомы с Git и GitHub, предположим, что проект находится в репозитории и все изменения успешно отправлены на сервер. Для публикации через Streamlit Cloud этого достаточно — сервис будет получать код напрямую из вашего GitHub-репозитория.

Однако перед деплоем необходимо убедиться, что проект содержит файл requirements.txt.

Что такое requirements.txt

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

Например, если проект работает с Streamlit, Pandas и Matplotlib:

import streamlit
import pandas
import matplotlib

то при публикации серверу необходимо автоматически установить эти библиотеки. Именно для этого используется файл requirements.txt.

Простейший пример может выглядеть так:

streamlit
pandas
matplotlib
openpyxl

Во время деплоя Streamlit Cloud прочитает этот файл и установит все перечисленные зависимости перед запуском приложения.

Автоматическое создание файла

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

pip freeze > requirements.txt

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

Структура проекта перед публикацией

Перед деплоем полезно убедиться, что проект имеет понятную структуру.

Например:

project/
│
├── app.py
├── requirements.txt
├── data/
│
├── pages/
│
└── assets/

Такая организация упрощает дальнейшую поддержку приложения.

Публикация через Streamlit Cloud

После загрузки проекта на GitHub можно перейти на Streamlit Cloud. Процесс публикации обычно выглядит следующим образом: Сначала выполняется авторизация через GitHub. Затем выбирается нужный репозиторий. После этого указывается главный файл приложения. Чаще всего это app.py.

После подтверждения настроек Streamlit Cloud автоматически скачает проект из GitHub, установит все зависимости из requirements.txt, запустит приложение и предоставит публичную ссылку для доступа через браузер.

Что происходит после обновления проекта

Одно из главных преимуществ GitHub и Streamlit Cloud заключается в автоматическом обновлении приложения.

Предположим, вы добавили новый график. После этого достаточно сделать новый commit и залить изменения на github. Через некоторое время Streamlit Cloud автоматически обновит опубликованное приложение. Никаких дополнительных действий выполнять не потребуется.

Настройка deployment

После публикации полезно проверить несколько вещей:

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

Именно эти моменты чаще всего становятся причиной ошибок при публикации.

Получение ссылки на приложение

После успешного деплоя Streamlit Cloud выдаст публичный адрес.

Например:

https://my-dashboard.streamlit.app

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

Наиболее частые ошибки

  • Отсутствует requirements.txt
    Сервер не может установить необходимые библиотеки.
  • Локальные файлы не загружены в репозиторий
    Приложение работает локально, но не запускается после деплоя.
  • API-ключи находятся в коде
    Это создаёт серьёзную угрозу безопасности.
  • Неверно указан главный файл приложения
    Streamlit Cloud не может определить точку входа.

Наиболее частые вопросы

  • Обязательно ли использовать GitHub?
    Для Streamlit Cloud да, поскольку сервис работает напрямую с репозиториями GitHub.
  • Можно ли публиковать приватные проекты?
    Да, Streamlit Cloud поддерживает работу с приватными репозиториями.
  • Что делать после изменения кода?
    Достаточно отправить изменения в GitHub, и приложение обычно обновится автоматически.
  • Нужно ли арендовать сервер?
    Для большинства учебных и небольших проектов Streamlit Cloud позволяет обойтись без собственного сервера.

Итоги

Сегодня мы завершили полный цикл разработки Streamlit-приложения и научились публиковать его в интернете. Мы познакомились с GitHub, разобрались с назначением requirements.txt  и выполнили деплой через Streamlit Cloud.

Теперь наш dashboard существует не только на локальном компьютере, но и доступен через обычную ссылку в браузере. Именно на этом этапе учебный проект превращается в полноценное web-приложение, которое можно показывать пользователям, заказчикам или работодателям.

На следующий урок