Как сохранить программу на питоне в формате exe

Содержание
Читайте также:
Как через программу неро записывать на диск

Убедитесь, что вы сохраняете изображение в том же DPI, что и приложение WPF, некоторые форматы изображений содержат эту информацию в виде метаданных. Я не знаю, решает ли это проблему, но у меня возникли некоторые проблемы из-за этого, когда изображения, измененные до 100%, стали больше или меньше, чем ожидалось.

Может быть что-то подобное.

задан Kingsley 17 January 2019 в 01:03

1 ответ

Я просто взломщик сценариев и идиот, когда дело доходит до инструментов командной строки. Но я ДЕЙСТВИТЕЛЬНО хотел упаковать свою игру на Python в исполняемый файл Windows. Я боролся с pyinstaller в течение нескольких дней, и прочитал все темы других, которые также пытаются выяснить это, и я также прочитал все документы по pyinstaller несколько раз. Ни одно решение не сработало для меня, но после долгих проб и ошибок я, наконец, наткнулся на рецепт успеха и хочу поделиться им на случай, если другие разработчики пигмеев будут биться с этим. Решение содержит биты и кусочки нескольких потоков.

Конвертируем Python в .exe

Как создать одиночный exe-файл из многофайловой Python-игры Python с несколькими каталогами ресурсов с помощью pyinstaller в Windows:

Сначала установите pyinstaller.

Откройте командную строку Windows, введите:

pip install pyinstaller

Создайте игру на Python. Скажем, основной файл игры называется main_game_script.py, расположенный в

C:UsersbluebDocumentspythongame_dir

Добавьте эту функцию в main_game_script.py. Обязательно импортируйте os и sys. (Я бы никогда не понял, что мне нужно добавить эту функцию в мою игру, но она работает, так что спасибо тому, кто опубликовал ее в какой-то другой теме)

import sys import os def resource_path(relative_path): try: # PyInstaller creates a temp folder and stores path in _MEIPASS base_path = sys._MEIPASS except Exception: base_path = os.path.abspath(«.») return os.path.join(base_path, relative_path)

Загрузка изображений в игру , вызовите эту функцию, например, так:

asset_url = resource_path(‘assets/chars/hero.png’) hero_asset = pygame.image.load(asset_url)

Когда ваша игра будет готова к переносу в EXE, откройте командную строку Windows. Перейдите в основной каталог игры и введите:

pyinstaller —onefile main_game_script.py

Это будет выглядеть так:

C:UsersbluebDocumentspythongame_dir>pyinstaller —onefile main_game_script.py

Это создаст четыре важных элемента:

— a main_game_script.spec file in the game_dir — a ‘build’ dir in the game_dir — a ‘dist’ directory in the game_dir — a main_game_script.exe will be created in the ‘dist’ directory.

Выполнение команды выдает массу предупреждений и логов. Я не знаю, что все это значит. Но до тех пор, пока в итоговой выходной строке говорится об успехе, вы, вероятно, хороши.

Ваш exe не будет работать пока. Во-первых, вы должны изменить файл .spec (который теперь существует в game_dir), чтобы добавить необходимые пути к игровым активам в exe:

Читайте также:
Как в программе 1с изменить предприятие

Откройте файл main_game_script.spec в блокноте или в любом другом месте. Замените пустой список данных [] на пути к каталогам ресурсов, например, такие (используя кортежи!):

Как сохранить Python код в EXE файл


datas=[(‘assets/chars/*’,’assets/chars’),(‘assets/tiles/*.png’,’assets/tiles’),(‘assets/fonts/*’,’assets/fonts’)],

Первое значение каждого кортежа — это фактические имена файлов, которые вы хотите импортировать. Второе значение — это относительный путь от вас main_game_script.py Синтаксис и пути должны быть идеальными, иначе они не будут работать и могут не выдавать ошибку

Сохраните и закройте файл ‘main_game_script.spec’. Вернитесь в командную строку Windows. Тип:

pyinstaller main_game_script.spec
C:UsersbluebDocumentspythongame_dir>pyinstaller main_game_script.spec

Это каким-то образом встраивает пути dir активов в exe, который вы уже построили

После всего этого (которое Это займет всего пару минут после того, как вы это сделаете 100 раз), у вас, наконец, будет один EXE-файл вашей игры с питоном, который включает в себя все игровые ресурсы. Если вы все сделали правильно, дважды щелкните по EXE, чтобы поиграть в игру с питоном.

Примечание: чтобы понять все правильно, я потратил пару дней. Я начал с простого test_game_script.py с минимальным количеством кода и методично итерировал, добавляя больше путей к ресурсам и сложности с каждой итерацией, чтобы я мог изолировать, что было сломано и почему. Если ваша игра не конвертируется в EXE должным образом, начните с простого 5-строчного игрового сценария с одним активом и медленно наращивайте его до тех пор, пока у вас не будет работающего конвейера, затем примените этот функционирующий конвейер к активным играм. В противном случае изолировать проблему будет невозможно.

Источник: legkovopros.ru

auto-py-to-exe — компилятор питоновских скриптов для windows

auto-py-to-exe

auto-py-to-exe — компилятор питоновских скриптов для windows : 2 комментария

  1. Mons2022-03-19 в 00:27 Чем лучше pyinstaller. Спрашиваю не из праздного любопытства, основная проблема всегда с антивирусами и с библиотеками при распространении.
  1. 1 12022-03-20 в 17:11 Я посмотрел описание pyinstaller — видимо суть та же, что и auto-py-to-exe. Берётся питон со всеми нужными для скрипта зависимостями и сам скрипт (или модуль), и всё это запихивается в один исполняемый файл (exe).
    pyinstaller может даже мощнее, он вроде может упаковывать программы не только под винду, но и другие ОС (Linux, Mac, …BSD).
    auto-py-to-exe нашёл несколько лет назад, несколько раз пользовался — всегда работало безотказно. В последний раз собирал экзешник с DearPyGui — всё отлично получилось.

Сборка приложения на Python 2.7 + PyQt4 в один exe файл под Windows

Наверное у каждого человека, который пишет на Python возникал вопрос: «А как моё приложение могут запустить другие пользователи?». Разумеется, можно поставить Python и все необходимые библиотеки, а можно просто скомпилировать всё в один exe файл. Как по мне — второй вариант намного проще. А используя PyQt4 можно ещё и неплохой GUI рисовать. Для примера я покажу как собрать небольшую программу PassGen — генератор паролей.

Качаем, ставим, настраиваем. Рекомендую прописать папку установки Python в переменную системы %PATH%, что бы из консоли работала команда python script.py без указания полного пути до python.exe.

Все скрипты для сборки, включая сам генератор PassGen.pyw будут в архиве с конце статьи.

Начнём с подготовки. Мы же хотим, что бы у нашего приложения была красивая иконка, которая правильно показывается на всех версиях Windows от XP до 10? Значит нам понадобится её изготовить. Ну или просто позаимствовать. Для того, что бы собрать универсальный ico файл нам понадобятся пять картинок в формате png с разрешением 16×16, 32×32, 48×48, 64×64 и 128×128. Сохраняем их в папке icons.

Из этих картинок наш скрипт соберёт правильную иконку. Далее есть ньюанс с иконками в самом приложении: их желательно вставить в тело самого pyw скрипта. Как? Очень просто — закодировать их в base64.

Всё подготовили? Написали pyw скрипт, который работает как надо и не подгружает внешние рессурсы? Тогда начинаем собирать. Подготавливаем скрипт для сборки через py2exe:

#!/usr/bin/python # -*- coding: utf-8 -*- # Импорт компилятора и настройщика import py2exe from distutils.core import setup # Версия готового .exe файла. # Должна состоять из 4 групп цифр.

Например: 1.0.0.0 VER_FILE = ‘version.txt’ VER = file(VER_FILE).read().strip() # Подготовка к сборке setup( # Опции сборки.

# includes — подключаемые библиотеки # для PyQt4 обязательно надо включать в сборку библиотеку sip # bundle_files — собрать все библиотеки в один zip файл # compressed — сжать готовый файл options = ‘py2exe’: «includes»:[«sip»], ‘bundle_files’: 1, ‘compressed’: True>>, # None — включить library.zip в .exe файл zipfile = None, # Версия .exe файла version = VER, # Название .exe файла name = ‘PassGen’, # Описание description = ‘Password Generator’, windows = [ # Название скрипта для компиляции «script»:»PassGen.pyw», # Пакет иконок приложения «icon_resources»: [(1, «icons/PassGen.ico»)], # Исходное имя файла «dest_base»:»PassGen», # Копирайты «copyright»:’Copyright (C) diSabler ‘, # Название компании производителя «company_name»: ‘Disabler Production Lab.’ >], ) # The end is near!

Сохраняем его в build.py. Рядом с ним ложим файл version.txt в котором указываем версию своего скрипта. Теперь напишим простенький cmd файл, который автоматизирует всю ручную работу:

Сохраняем полученный файл в build.cmd.

Ну и сам скрипт генерации паролей:

Сохраняем в PassGen.pyw.

Для сборки могут потребоваться ещё такие файлы, которые так же можно найти в архиве в конце статьи:
— png2ico.exe — маленькая утилитка для сборки ico из png файлов.
— msvcp90.dll — библиотека из MS Redist 2010.

Если всё сделали правильно — по двойному клику на build.cmd запустится процесс сборки нашего файла. Результат сборки будет в папке dist. Запускаем exe файл и наслаждаемся результатом:

Простой пароль: от 2 до 5 слогов. Подходит для ручного ввода.
Средний пароль: от 6 до 32 знаков, буквы, БУКВЫ, цифры. Исключены схожие по написанию i, l, o, I, L, O, 1, 0.
Сложный пароль: от 6 до 32 знаков, буквы, БУКВЫ, цифры, символы. Исключены схожие по написанию i, l, o, I, L, O, 1, 0.

Горячие клавиши:
CTRL+1..3 — Новый пароль
CTRL+Q — Выход

Для меня чаще всего нужны именно такие варианты паролей. Надеюсь для Вас данная информация будет полезной.

Ссылки:
Архив со всеми скриптами: PassGenSrc.7z
Готовый exe файл в архиве: PassGen.7z
Есть вопросы? Мои контакты тут
Отдельная благодарность сайту dumpz.org за красивые дампы исходных файлов.

Источник: www.dsy.name

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru