
Всем привет! Помню, как в начале пути я потратил целый день, пытаясь объяснить заказчику, что для запуска моего «скрипта» нужно установить Python, настроить виртуальное окружение и прописать переменные среды. Это было провальное решение. В конечном итоге я пришел к PyInstaller, который позволил мне просто отправить один единственный .exe файл, который запускается на любом Windows-компьютере без лишних вопросов. Если вы автоматизируете задачи для коллег или создаете утилиты для широкого круга лиц, вопрос упаковки кода в исполняемый формат рано или поздно станет перед вами ребром. Сегодня мы разберем не только базовую команду для сборки, но и тонкости, которые сэкономят вам часы отладки.
Оглавление
Что такое PyInstaller?
PyInstaller — это кроссплатформенный инструмент, который анализирует ваш скрипт, находит все импортируемые модули и зависимости, а затем собирает всё это вместе с интерпретатором Python в один или несколько файлов. Это позволяет запускать программу на целевой машине, где Python вовсе не установлен.
Это очень удобно, когда ваш код использует сложные библиотеки, такие как selenium или pandas. PyInstaller «упаковывает» их внутри себя, создавая самодостаточный пакет.
📚 Документация:PyInstaller Manual «PyInstaller замораживает (пакует) приложения Python в автономные исполняемые файлы под Windows, GNU/Linux, macOS, FreeBSD, Solaris и AIX.»
Установка и простейший пример
Установка проходит стандартно через пакетный менеджер pip. Перед началом сборки важно убедиться, что вы находитесь в рабочем виртуальном окружении, где установлены все необходимые библиотеки, иначе PyInstaller их «не увидит».
Установка и создание первого exe
После установки в консоли появится команда pyinstaller. Чтобы превратить файл hello.py в программу, достаточно выполнить одну команду. Для новичков рекомендую сначала разобраться с тем, как писать чистый и читаемый код на Python, чтобы структура проекта была понятной для упаковщика.
pip install pyinstaller
pyinstaller hello.py
После завершения процесса вы увидите папку dist/, внутри которой будет лежать ваша программа. Но не спешите запускать её — если вы новичок, скорее всего, вы столкнетесь с тем, что папка слишком большая, так как там лежат все библиотеки отдельно. Об этом мы поговорим в разделе про оптимизацию.
Основные флаги PyInstaller
Чтобы не плодить сотни файлов, мы используем флаги. Самый частый запрос — сделать всё в одном файле.
Таблица с пояснениями:
| Флаг | Назначение | Пример |
| —onefile | Один EXE-файл | pyinstaller —onefile script.py |
| —windowed | Без консоли (для GUI) | pyinstaller —onefile —noconsole app.py |
| —icon=icon.ico | Своя иконка | pyinstaller —onefile —icon=my.ico app.py |
| —icon=icon.ico | Имя EXE-файла | pyinstaller —onefile —name=»Parser» bot.py |
Если ваш скрипт использует selenium для поиска элементов, вам также стоит почитать статью про поиск ссылки по атрибуту selenium python, чтобы логика работы скрипта внутри упаковки была безупречной.
Пример добавления иконки и скрытие консоли
Чаще всего программы на Python создаются для автоматизации кликов. Если вы используете pyautogui клики внутри браузера, то наличие консоли вам не нужно — оно только мешает.
pyinstaller --onefile --noconsole --icon=myicon.ico myscript.py
Команда выше соберет ваш скрипт в один файл, скроет консоль и повесит красивую иконку. Если в процессе возникнут сложности с поиском объявлений или элементов, обратите внимание на логику поиск объявления по картинке, она отлично работает в связке с автоматизированными утилитами.
Работа с внешними файлами
Часто скрипт работает с конфигами или картинками. PyInstaller не всегда подхватывает их автоматически. Чтобы добавить файл вручную, используйте --add-data. Если вы делаете кликер и вам нужно реализовать клик по второй ссылке python
, убедитесь, что все пути в коде прописаны относительно, иначе .exe не найдет файлы после распаковки во временную папку.
1. Добавление одного файла
Если нужно добавить файл config.json в корень вашего исполняемого файла:
pyinstaller --onefile --add-data "config.json;." my_script.py
2. Добавление целой папки с ресурсами
Если у вас есть папка assets (с картинками, шрифтами и т.д.) и вы хотите, чтобы она была доступна внутри .exe как папка assets:
pyinstaller --onefile --add-data "assets;assets" my_script.py
Здесь первая часть assets — это путь на вашем компьютере, а вторая assets — это имя папки, которое будет создано внутри временного хранилища .exe.
3. Добавление нескольких разных ресурсов
Если нужно упаковать и отдельный файл, и папку:
pyinstaller --onefile --add-data "config.json;." --add-data "assets;assets" my_script.py
Вы просто прописываете флаг --add-data перед каждым новым объектом.
4. Добавление подпапок
Если вы хотите, чтобы файлы из папки images оказались внутри exe в папке data/imgs:
pyinstaller --onefile --add-data "images;data/imgs" my_script.py
Типичные ошибки и их исправление
Главная проблема — антивирусы. Иногда сборка воспринимается как вирус из-за того, что PyInstaller добавляет «упаковщик». Решается это либо покупкой цифровой подписи, либо добавлением папки в исключения.
Если ваш скрипт — это сложный инструмент, где вы делаете клик по третьей ссылке из списка python, и он падает при сборке, проверьте наличие всех импортов. Иногда PyInstaller не может найти скрытые зависимости — в таком случае их нужно явно указать через --hidden-import.
Советы по оптимизации
Чтобы файл не весил 200 мегабайт, всегда используйте виртуальное окружение, где установлены только необходимые библиотеки. Если вы делаете кликер по координатам браузера python, не нужно импортировать тяжелые модули, которые вы не используете. Чистота импортов — залог малого веса финального .exe.
Также полезно знать, как реализовать нажатие клавиш ctrl + enter в python, чтобы ваш кликер был максимально похож на действия реального пользователя, не утяжеляя при этом код лишними функциями.
Заключение
PyInstaller — это «must-have» в арсенале любого автоматизатора. Теперь вы знаете, как пользоваться этим инструментом: от базовой упаковки до настройки иконок и работы с внешними данными. Не забывайте про поиск элемента в java скрипте python (если работаете с веб-автоматизацией), так как стабильность вашего скрипта в скомпилированном виде зависит от надежности ваших селекторов. Практикуйтесь, пробуйте разные флаги и ваши инструменты станут профессиональными продуктами!
• Клик по второй ссылке из списка Python — как автоматизировать навигацию
• PyAutoGUI клики внутри браузера — автоматизируйте интерфейсы без API
• Нажатие клавиш Ctrl + Enter в Python — полезная шпаргалка для симуляции действий пользователя
📢 В своем Telegram-канале я публикую полезные разборы кода каждый день, плюс эксклюзивные фишки, которых нет на сайте. Подпишитесь, чтобы ускорить свою разработку: Telegram-канал
👉 Ваш интерес — лучшая мотивация для новых статей!