diff options
| author | vlapa <vlapa@ya.ru> | 2026-06-13 20:33:26 +0300 |
|---|---|---|
| committer | vlapa <vlapa@ya.ru> | 2026-06-13 20:33:26 +0300 |
| commit | e5abc1fe99340b979b18864d978179f71fe8f5c5 (patch) | |
| tree | 98fd0ad7c6d0744894d6e74e446daacd9e6dd1b5 /PYTHON/PYINSTALLER.md | |
First
Diffstat (limited to 'PYTHON/PYINSTALLER.md')
| -rw-r--r-- | PYTHON/PYINSTALLER.md | 164 |
1 files changed, 164 insertions, 0 deletions
diff --git a/PYTHON/PYINSTALLER.md b/PYTHON/PYINSTALLER.md new file mode 100644 index 0000000..8ba9c87 --- /dev/null +++ b/PYTHON/PYINSTALLER.md @@ -0,0 +1,164 @@ +`pip install pyinstaller` + +`pyinstaller main.py` +- cоздастся папка `dist` с исполняемым файлом + +`pyinstaller --onefile main.py` +- одним файлом + +`pyinstaller --noconsole --onefile main.py` +- будет создан исполняемый файл, работающий в фоновом режиме + +================================ + +# Превращаем код на Python в исполняемый EXE-файл + +Отредактировано 20 дек 2023 + +Как скомпилировать Python-код в файл EXE, чтобы защитить свой код или наглядно показать работу вашей программы. + +Обычно код на Питон запускают двумя способами: через терминал или через текстовый редактор / IDE. + +При этом стоит отметить, что файлик Python — это всего лишь скрипт, который сохранён в расширении .py. Да, это очевидно, но в этом и кроется проблема: иногда нужно скрыть исходный код, а поделиться программкой (в виде альфа-версии, например) очень хочется. + +Одно из решений, которое закрывают боль с исходным кодом — это конвертация файла Python в исполняемый exe-файлик. + +В этой статье мы научимся создавать «экзешники» при помощи двух библиотек: Pyinstaller and auto-py-to-exe. + +Перед тем, как продолжить чтение статьи, скачайте этот репозиторий. Он здорово поможет вам понять процесс, если вы будете повторять все шаги вместе с нами. + +## Почему возникает потребность конвертировать Python-код в EXE + +1. Код могут украсть. Об этом мы уже говорили выше. Куда проще достать исходный код непосредственно из py-файла, чем из скомпилированного приложение. Py-файл достаточно просто открыть! +2. Хочется поделиться кодом с другими юзерами. Дело не только в том, что ваш код могут украсть. Зачастую код содержит зависимости, которыми должен владеть другой юзер перед запуском вашего Python-кода. Но что, если он вообще ничего не смыслит в программировании? Не заставишь ведь его сперва выучить программирование, чтобы оценить ваше новое суперприложение. Проще создать исполняемый файл. +3. Исполняемый файл можно запускать автоматически, по расписанию. Этот пункт актуален, если вы решили написать утилиту для вашего ПК, и эта утилита должна запускаться либо в определенное время, либо вместе с запуском ОС. + +## Конвертация кода Python в файл .exe + +Для начала создадим скрипт на Python. В качестве примера мы используем открытый код бронирования жилья AitBnb в Нью-Йорке. Если у вас уже есть готовый код, можете сразу использовать его. + +```python +import pandas as pd +from pandas.api.types import CategoricalDtype + +def perform_validation(filename:str): + """ + A function to validate inputs for NYC Airbnb Open data. + """ + path_to_data = "../.." + data = pd.read_csv(f"{path_to_data}{filename}") + + # Convert neighbourhood_group to type category + neighbourhood_group_to_cat = CategoricalDtype( + categories=["Manhattan", "Brooklyn", "Queens", "Bronx", "Staten Island"], + ordered=False + ) + + data["neighbourhood_group"] = data["neighbourhood_group"].astype(neighbourhood_group_to_cat) + + # Convert room_type to type category + room_type_to_cat = CategoricalDtype( + categories=["Entire home/apt", "Private room", "Shared room"], + ordered=False + ) + + data["room_type"] = data["room_type"].astype(room_type_to_cat) + + # Convert last_review to datetime + data["last_review"] = pd.to_datetime(data["last_review"]) + + # Minimum nights a person can stay is one night + assert data["minimum_nights"].min() >= 1 + + # Minimum number of reviews is 0 + assert data["number_of_reviews"].min() >= 0 + + # Minimum number of reviews per month + assert data["reviews_per_month"].min() >= 0.00 + + # Minimum amount of listings per host + assert data["calculated_host_listings_count"].min() >= 1 + + # Number of days when listing is available for books + # Could be 0 if tennant has long term booking + assert data["availability_365"].min() >= 0 + + # Save validated data + data.to_csv("validated_ab_nyc_2019.csv", index=False) + +if __name__ == "__main__": + # User inputs filename + filename = input("Enter filename: ") + + # Ensure it's a string + if not filename.isalpha(): + filename = str(filename) + + # Automated validation + perform_validation(filename) +``` + +Вы не забыли скачать библиотеки по ссылке по введении? Сделайте это сейчас. + +](https://tproger.ru/articles/secure-app-development) + +Вот структура файлов на GitHub: + +``` +# Directory structure +| AB_NYC_2019.csv +| ++---auto_py_to_exe +| | requirements.txt +| | validation.py ++---pyinstaller + | requirements.txt + | validation.py +``` + +Каждая из директорий должна обладать своей виртуальной средой. Убедитесь, что среды развёрнуты и в директории pyinstaller, и в auto-py-to-exe. + +Сохраните ваш код и скопируйте его в обе директории. + +## Что делать в Pyinstaller + +Ещё раз убедитесь, что виртуальная среда развёрнута. Да, мы настаиваем. Проверьте, установлены ли все зависимости между библиотеками и кодом. + +Всё в порядке? Запускайте команду: + +``` +pyinstaller --onefile validation.py +``` + +Процесс должен запуститься, и в конце консоль сообщит: «Completed successfully». Значит, всё прошло успешно. ? + + + +В папке с библиотекой и кодом должны появиться две новые директории под названиями build и dist. В папке dist вы найдёте заветный exe-файл. Запустите его и проверьте работу приложения. + +## Что делать в Auto-py-to-exe + +Также скиньте файлик с кодом в папку с библиотекой и проверьте зависимости между кодом и библиотекой. + +Запустите команду: + +``` +auto-py-to-exe +``` + +Команда запустит графический интерфейс. + + + +Запускаем компилятор Auto-py-to-exe // DataCamp + +1. В строчке «Script Location» нажмите «Browse» и выберите py-скрипт. +2. В строчке «Onefile» выберите, скомпилируется код в единый файл или в папку. В папке будет содержаться exe-файл и все зависимости кода. +3. В строчке «Console Window» выберите настройки отображения exe-приложения, когда оно будет запущено. Если выбрать «Console Based», запустится и программа, и консоль, в которой будут показаны процессы. Опция «Window Based» скрывает консоль. +4. Нажмите кнопку «Convert .py to .exe». Готово! + +## Запускаем exe-файл + +В обоих случаях, после компиляции и запуска exe-файла, тот запустит консоль и попросит вас ввести имя файла. Придумайте его и укажите расширение, в котором всё должно работать. К примеру, `Tproger-is-the-best-it-media-in-the-world.csv`. Тогда консоль закроется, а в папке появится заветный файлик с расширением .csv. + +И всё — вы великолепны!
\ No newline at end of file |
