Безопасные способы компиляции Python в exe
Всем доброго дня! Написали программу на Python и, чтобы скрыть библиотеки, которые мы использовали, пришлось прибегнуть к exe-файлу. Пробовали pyinstaller — очень удобный способ, но слишком легко реверсится Пробовали nuitka — очень безопасный способ, но на некоммерческой версии слишком мало функций. Из-за этого с использованием —standalone (чтобы python был включен в сборку, и пользователю не надо было скачивать его самостоятельно) создается папка с зависимостями python и exe-файл находится в ней вперемешку со всеми другими файлами (это не очень удобно для использования другими пользователями) Прошу помочь ответить на вопросы: Как предотвратить реверсинг exe-файла, скомпилированного через PyInstaller? Можно ли обфусцировать скомпилированный exe-файл? Есть ли другие безопасные способы компиляции?
Отслеживать
задан 30 мар в 9:16
Александра Александра
1 1 1 бронзовый знак
Нет, просто пишите на компилируемом языке программирования, это намного лучше чем писать на Python
30 мар в 9:25
nuitka транслирует в Си, потом все компилируется. Но безопасных способов нет, exe файл в любом случае взломают, если будет нужно, даже если вы будете компилировать в машинный код, а не интерпретатор+байткод.
30 мар в 10:44
Безопасный способ — вообще не отдавать пользователю exe, а давать веб-приложение.
Python код в exe с pypy
Я слышал, что pypy в большой мере ускоряет работу python кода, но он используеться как средство запуска основного кода. Возможно ли скомпилировать уже оптимизированый код с помощью pypy в exe?
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Можно ли ускорить код через pypy?
Многие видели видео в котором хауди с помощью интерпретатора pypy перевёл версию 2.7 в exe. А как.
Скомпилировать python код в формат exe
Я пытался скомпилировать python код в формат exe с помощью pyinstaller но когда я ввожу pyinstaller.
Преобразование python в exe через pyinstaller и auto-py-to-exe
Всем привет! Начал изучение Python и решил преобразовать простенький код в .exe и столкнулся с.
Как работать с pypy?
Всем привет) Прошу подсказать, как установить pypy (нет привычных ехе-шников), как писать в нем.
Python-сообщество
- Начало
- » Центр помощи
- » Python file to exe
#1 Март 1, 2019 17:39:01
Rudey Зарегистрирован: 2019-02-17 Сообщения: 23 Репутация: 0 Профиль Отправить e-mail
Python file to exe
Здравствуйте, пытаюсь конвертировать Python программу в EXE. С одним файлом это получилось(на другом компьютере), но со вторым вообще ни как. Делал все по этому видео: https://www.youtube.com/watch?v=lOIJIk_maO4&
Выдает такую ошибку:
SyntaxError: Non-UTF-8 code starting with ‘\xec’ in file…
Исходный код прикреплю.
Если у вас получиться скиньте пожалуйста exe этой программы.

Прикреплённый файлы:
main.py (201 байт)
#2 Март 1, 2019 17:47:59
FishHook От: Зарегистрирован: 2011-01-08 Сообщения: 8312 Репутация: 568 Профиль Отправить e-mail
Python file to exe
вы делаете глупости, питоньи программы так не распространяются. Из программы на питоне нельзя сделать бинарник.Скажите сначала вашу цель, зачем вам exe?
#3 Март 1, 2019 17:52:23
Rudey Зарегистрирован: 2019-02-17 Сообщения: 23 Репутация: 0 Профиль Отправить e-mail
Python file to exe
FishHook
вы делаете глупости, питоньи программы так не распространяются. Из программы на питоне нельзя сделать бинарник.Скажите сначала вашу цель, зачем вам exe?
Мне просто было интересно понять как это работает, да и если программу конвертировать в Python, то можно будет использовать её на компьютере без питона.
Ну раз это плохое решение, то как тогда распространяются программы на питоне.
#4 Март 1, 2019 18:00:08
FishHook От: Зарегистрирован: 2011-01-08 Сообщения: 8312 Репутация: 568 Профиль Отправить e-mail
Python file to exe
Rudey
то как тогда распространяются программы на питоне
Зачем вы у меня это спрашиваете? В любом учебнике по питону этот вопрос широко и развернуто освещается.
#5 Март 1, 2019 18:01:40
Rudey Зарегистрирован: 2019-02-17 Сообщения: 23 Репутация: 0 Профиль Отправить e-mail
Python file to exe
Окей, сам почитаю, но вопрос с ошибкой остается открытым.
#6 Март 4, 2019 10:19:10
Rodegast От: Пятигорск Зарегистрирован: 2007-12-28 Сообщения: 2640 Репутация: 179 Профиль Отправить e-mail
Python file to exe
> то как тогда распространяются программы на питоне.
С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.
#7 Март 4, 2019 19:17:28
Rudey Зарегистрирован: 2019-02-17 Сообщения: 23 Репутация: 0 Профиль Отправить e-mail
Python file to exe
Rodegast
Вот тут я написал как правильно это делать
Можете объяснить чем exe файл плох, сегодня смог конвертировать свою программу в .exe, и все прекрасно работает(могу запускать на компьютерах без пайтона)
#8 Март 4, 2019 19:57:13
doza_and От: Зарегистрирован: 2010-08-15 Сообщения: 4138 Репутация: 252 Профиль Отправить e-mail
Python file to exe
Rudey
Можете объяснить чем exe файл плох, сегодня смог конвертировать свою программу
У меня теперь не сможете запустить. У меня UNIX.
Rudey
могу запускать на компьютерах без пайтона
Вы ошибаетесь. Питон у вас есть, он упакован внутри exe файла. С равным успехом можете его просто копировать на целевую машину.
Отредактировано doza_and (Март 4, 2019 19:59:42)
#9 Март 4, 2019 20:42:38
Rudey Зарегистрирован: 2019-02-17 Сообщения: 23 Репутация: 0 Профиль Отправить e-mail
Python file to exe
doza_and
Вы ошибаетесь. Питон у вас есть, он упакован внутри exe файла. С равным успехом можете его просто копировать на целевую машину.
Все теперь я понял почему файл с 15 строками весит почти 6 мб, pyinstaller просто в один файл все запихивает.
doza_and
У меня теперь не сможете запустить. У меня UNIX.
В этом вы правы, exe там не запустится.
Буду значит читать про Portable Python, хотя сегодня скачал его и нечего не понял, как мне сделать исполняемый файл.
Отредактировано Rudey (Март 4, 2019 20:45:06)
#10 Март 5, 2019 08:12:05
doza_and От: Зарегистрирован: 2010-08-15 Сообщения: 4138 Репутация: 252 Профиль Отправить e-mail
Python file to exe
Rudey
как мне сделать исполняемый файл.
Никак. Программы на питоне распространяются в виде исходного текста и без установленного питона не работают в принципе (точно также как java не работает без установленного jre а exe файл не запустится если в ОС будет неподходящий рантайм. Это вообще касается любых языков программирования Вы кстати пусканите полученный вами exe на windows xp или ранее. Я думаю ваш exe не запустится.). Ставятся программы с зависимостями пакетным менеджером pip. По сути любая программа которую вы хотите распространять должна иметь инсталлятор, который проверит наличие различных ресурсов и поправит все что нужно.
p.s. Есть компиляторы языка питон типа nutika. Но они предназначены для повышения быстродействия а не для упрощения дистрибуции. Если вы будучи новичком будете ими пользоваться то наткнетесь на гораздо более сложные проблемы распространения кода на c.
Отредактировано doza_and (Март 5, 2019 08:15:15)
Как упаковать код python в exe
Для начала нужно зайти на сайт cx-freeze.sourceforge.net и скачать версию модуля cx_Freeze для своей операционной системы, также для пайтона. У меня Windows и Panda 1.7.2 соответственно пайтон 2.6, я скачал: Windows Installer (Python 2.6)
Установка cx_Freeze проста, инсталятор определит директорию где расположен пайтон автоматически, вам нужно убедиться что это директория панды, если это не так то укажите папку пайтона в панде.
И так чтобы не запутаться создадим отдельную папку и назовём её “Game”, в названии и адресе папки не должно быть кириллицы и пробелов во избежание дальнейших проблем. В папке “Game” создадим файл “Panda.py” который мы будем упаковывать с помочью cx_Freeze, я выразился словом упаковывать, т.к. это не является компиляцией py файла в код, так же есть модуль py2exe который тоже упаковывает а не компилирует. Далее в папке “Game” надо создать папку “model” и скопировать туда модель из папки models\panda-model.egg.pz, далее создайте в папке “model” папку «maps» и скопируйте в неё текстуру из models\maps\panda-model.jpg Откроем файл “Panda.py” и создадим код для примера:
import direct.directbase.DirectStart
from direct.actor import Actor
base.disableMouse()
base.camera.setPos(0,-20,2)
pandaActor = Actor.Actor(«model/panda-model»)
pandaActor.setScale(0.005,0.005,0.005)
pandaActor.reparentTo(render)
Обязательно проверьте код на работоспособность.
Пришло время создать в паке “Game” файл с конфигурацией для упаковки. Назовём его “setup.py” в нем добавим код:
from cx_Freeze import setup, Executable
setup(
name = «Panda3D»,
version = «0.1»,
description = «Panda3D»,
executables = [Executable(«Panda.py»)])
Пояснения: В данном файле из cx_Freeze импортируются необходимые классы. Подробней можно прочесть в документации. Самое необходимое в строке “executables = [Executable(«Panda.py»)])” где вносится имя файла(либо адрес и имя) который надо упаковать. Также в setup можно указать иконку и т.д. В документации имеется дополнительная информация.
Теперь в папке «Game» создадим файл “build.bat” кликните по нему правой кнопкой мыши и в меню действий выберите изменить, после этого он откроется в текстовом блокноте и добавьте в него строчки:
C:\Panda3D-1.7.2\python\python.exe setup.py build
pause
Пояснения: У вас директория где установлена панда может быть иначе, исправьте “C:\Panda3D-1.7.2” на ту в которой у вас находиться панда. “pause” для того чтоб не закрывалась консоль в ней будет отображаться процесс упаковки и ошибки.
Теперь можно запускать “build.bat”, Если упаковка прошла успешно то появится в папке “Game” папка “build” а в ней папка “exe.win32-2.6” имя может отличатся. В ней будет много файлов, среди которых будет “Panda.exe“ но пока рано его запускать, надо сделать копию папки bin из папки панды, далее открыть копию упорядочить файлы по типу и удалить все файлы с расширением “exe” и те что остались скопировать в папку “exe.win32-2.6” и согласиться на замены. Так же нужно скопировать в папку “exe.win32-2.6”, папку настроек “etc” из папки панды. Теперь последний шаг надо скопировать папку “model” из “Game” которою мы создавали, в папку “exe.win32-2.6”. Ну… можно запускать.
Заключение: если сжать содержимое папки “exe.win32-2.6” в архив то размер будет всё таки большой. У меня 25 мегабайт, но размер можно уменьшить. Я до копирования содержимого папки “bin” в папке “exe.win32-2.6” оставил только файлы “Panda.exe”, ”library.zip”, ”unicodedata.pyd”. Остальные принадлежали wx и tk они для запуска не нужны. И размер у меня получился 20.7, в папке “bin” также можно найти ненужные файлы, например dll от экспортёров maya, библиотеки DX — libpandadx8.dll не думаю что нужна))) Ну чтоб понять насколько можно сжать сделайте хорошую игру, а пираты покажут как надо удалять и сжимать))) Всё.
Внимание и за особенностей системы uCoz в коде бывают лишнии пробелы.
P.S. у меня получилось сжать этот пример до ~14.5 мб, с 7-Zip.
