summaryrefslogtreecommitdiff
path: root/PYTHON/PYINSTALLER.md
diff options
context:
space:
mode:
authorvlapa <vlapa@ya.ru>2026-06-13 20:33:26 +0300
committervlapa <vlapa@ya.ru>2026-06-13 20:33:26 +0300
commite5abc1fe99340b979b18864d978179f71fe8f5c5 (patch)
tree98fd0ad7c6d0744894d6e74e446daacd9e6dd1b5 /PYTHON/PYINSTALLER.md
First
Diffstat (limited to 'PYTHON/PYINSTALLER.md')
-rw-r--r--PYTHON/PYINSTALLER.md164
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». Значит, всё прошло успешно. ?
+
+![Превращаем код на Python в исполняемый EXE-файл 1](https://res.cloudinary.com/dyd911kmh/image/upload/v1661780977/executable_file_being_created_980fc79c16.png)
+
+В папке с библиотекой и кодом должны появиться две новые директории под названиями build и dist. В папке dist вы найдёте заветный exe-файл. Запустите его и проверьте работу приложения.
+
+## Что делать в Auto-py-to-exe
+
+Также скиньте файлик с кодом в папку с библиотекой и проверьте зависимости между кодом и библиотекой.
+
+Запустите команду:
+
+```
+auto-py-to-exe
+```
+
+Команда запустит графический интерфейс.
+
+![Превращаем код на Python в исполняемый EXE-файл 2](https://res.cloudinary.com/dyd911kmh/image/upload/v1661780977/graphical_user_interface_75a54c6f4b.png)
+
+Запускаем компилятор 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