Как упаковать FastAPI микросервис в исполняемый файл с PyInstaller: пошаговый урок

Упаковка микросервиса FastAPI в exe

В этом уроке мы покажем, как упаковать микросервис, написанный на FastAPI, в один исполняемый файл с помощью PyInstaller. Сервис будет запускаться через ASGI‑сервер Uvicorn и при получении HTTP‑запроса будет находить все процессы Chrome и завершать их.

Что делает сервис

Микросервис принимает HTTP‑запрос, сканирует список запущенных процессов, отбирает процессы, содержащие слово «chrome» в имени, и завершает их. Это простая демонстрация взаимодействия FastAPI, системных вызовов и упаковки в exe.

Как собрать exe‑файл

Для упаковки используется PyInstaller. После установки пакета (pip install pyinstaller) запускаем команду:

pyinstaller --onefile --add-data "path/to/requirements.txt;." main.py

Где main.py – точка входа вашего FastAPI‑приложения. Параметр --onefile создаёт один исполняемый файл, а --add-data гарантирует, что все зависимости будут включены.

Запуск и тестирование

После сборки в папке dist появится файл main.exe. Запустите его командой:

.
main.exe

Сервис будет слушать порт, указанный в коде (по умолчанию 8000). Откройте браузер и отправьте запрос, например, http://localhost:8000/stop-chrome. Вы увидите, что все запущенные процессы Chrome завершатся.

Исходники и видео‑урок

Полный код проекта можно скачать с официального сайта:

https://nizamov.school/pyinstaller-fastapi-uvicorn/

Для более наглядного понимания смотрите видео‑урок на YouTube:

https://www.youtube.com/watch?v=5VTmNUALSgg

Вывод

Упаковка FastAPI‑приложения в exe с помощью PyInstaller позволяет быстро распространять сервисы без необходимости установки Python и зависимостей на целевой машине. Такой подход особенно полезен для небольших утилит и внутренних инструментов.