Как отправить программу на python
Перейти к содержимому

Как отправить программу на python

  • автор:

Компиляция программы на python 3 в exe с помощью программы cx_Freeze

Python 3 логотип

Наверняка, у каждого Python-программиста возникало непреодолимое желание, а изредка и реальная потребность, скомпилировать свою программу на python в exe файл. Сегодня я расскажу, как это сделать с помощью программы cx_Freeze.

Вопрос 1: а оно надо?

Прежде, чем начинать компилировать программу, нужно убедиться, что это действительно необходимо.

«Компиляция» программы на python — процесс, который может сопровождаться множеством проблем. Более того, это не компиляция в машинный код, как, например, программы на C, а лишь «сборка» в исполняемый файл вашей программы вместе с частью интерпретатора python.

Поэтому, если вы будете использовать программу сами или на компьютерах тех, кто её будет использовать, будет стоять интерпретатор python, то вам не нужно её компилировать.

Установка cx_Freeze

Если компилировать программу на python всё-таки нужно, то скачиваем cx_Freeze с http://www.lfd.uci.edu/~gohlke/pythonlibs/#cx_freeze (так как в ней нет одного неприятного бага, который есть в официальной версии).

Затем устанавливаем, не забывая правильно выбрать директорию, где расположен python.

Компиляция

Компилировать будем программу «блэкджек» (файл 21.py) (кому лень смотреть, привожу полный исходный код).

   Создаём в папке с программой файл setup.py с содержимым:
Переходим в командную строку (обычно Пуск → Стандартные → Командная строка). Переходим в папку с программой (в моём случае D:\Dima\py). Запускаем команду C:\Python34\python.exe setup.py build (вместо C:\Python34 нужно написать папку, куда установлен python).

Начнется процесс сборки, в котором cx_Freeze может выдавать предупреждения, но, скорее всего, они не повлияют на работу программы.

Поздравляю! В папке build теперь есть ваша папка с исполняемым файлом!

Заметьте, не файл, а папка! Все остальные файлы также нужны для работы программы (да, это недостаток cx_Freeze). К тому же, при завершении программы окно сразу закрывается (а не ждет нажатия клавиши), поэтому в конец программы нужно дописать что-то вроде:

И скомпилировать ещё раз.

Также можно создать msi-архив командой C:\Python34\python.exe setup.py bdist_msi.

Разумеется, при компиляции более сложных программ вы можете столкнуться с более сложными проблемами.

Для их решения следует воспользоваться официальной документацией.

Для вставки кода на Python в комментарий заключайте его в теги

  • Модуль csv - чтение и запись CSV файлов
  • Создаём сайт на Django, используя хорошие практики. Часть 1: создаём проект
  • Онлайн-обучение Python: сравнение популярных программ
  • Книги о Python
  • GUI (графический интерфейс пользователя)
  • Курсы Python
  • Модули
  • Новости мира Python
  • NumPy
  • Обработка данных
  • Основы программирования
  • Примеры программ
  • Типы данных в Python
  • Видео
  • Python для Web
  • Работа для Python-программистов
  • Сделай свой вклад в развитие сайта!
  • Самоучитель Python
  • Карта сайта
  • Отзывы на книги по Python
  • Реклама на сайте

Как передать Python проект?

Как передать свой python-проект вместе с библиотеками другому человеку, у которого нет интерпретатора?
Вижу 2 способа:
1. Скомпилировать в exe (с помощью cx_Freeze)
2. Передать вместе с интерпретатором и библиотеками

На сайтах написано, что 1 вариант нежелателен. А как осуществить 2 вариант?

  • Вопрос задан более трёх лет назад
  • 2963 просмотра

5 комментариев

Оценить 5 комментариев

Как посылать команду другой программе из программы на python

что нужно запустить

Есть программа которая запускается в консоли и туда можно посылать команды и она дает на них ответ. Пример cmd -> '/program.exe' дальше ввожу команды . Как мне взаимодействовать с этой программой из скрипта на python. мне нужно автоматизировать запуск , отправку команды и сохранить результат ответа. Это возможно? вот пример. я запускаю программу а потом отправляю комманду load_tree

Отслеживать
IRA консилиум
задан 27 апр 2020 в 8:17
IRA консилиум IRA консилиум
25 3 3 бронзовых знака
subprocess посмотрите
27 апр 2020 в 8:27
subprocces позволяет вызвать программу но передать ЕЙ команды. не позволяет
27 апр 2020 в 8:30
покажите пример вашей программы
27 апр 2020 в 8:31
я загрузил пример в искомый вопрос.(сверху)
27 апр 2020 в 8:34
По описанию похоже на клиент/серверное взаимодействие.
27 апр 2020 в 10:22

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

исходя из данного примера, вы можете решить свой вопрос

import subprocess def run_win_cmd(command): result = [] process = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) for line in process.stdout: result.append(line) errcode = process.returncode for line in result: print(line) if errcode is not None: raise Exception('cmd %s failed, see above for details', command) run_win_cmd(input('введите команду: ')) 

Отслеживать
ответ дан 27 апр 2020 в 14:00
10.1k 5 5 золотых знаков 24 24 серебряных знака 68 68 бронзовых знаков

  • python
  • cmd
    Важное на Мете
Связанные
Похожие

Подписаться на ленту

Лента вопроса

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.1.9.3159

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Превращаем код на Python в исполняемый EXE-файл

Логотип компании Tproger

Как скомпилировать 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 в Нью-Йорке. Если у вас уже есть готовый код, можете сразу использовать его.

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"") # 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) 

Вы не забыли скачать библиотеки по ссылке по введении? Сделайте это сейчас.

Вот структура файлов на 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

В папке с библиотекой и кодом должны появиться две новые директории под названиями build и dist. В папке dist вы найдёте заветный exe-файл. Запустите его и проверьте работу приложения.

Что делать в Auto-py-to-exe

Также скиньте файлик с кодом в папку с библиотекой и проверьте зависимости между кодом и библиотекой.

auto-py-to-exe 

Команда запустит графический интерфейс.

Превращаем код на Python в исполняемый EXE-файл 2

Запускаем компилятор 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.

И всё — вы великолепны!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *