Подтвердить что ты не робот

Как развернуть настольное приложение Python?

Я начал с личного приложения python, которое запускается на рабочем столе. Я использую wxPython в качестве инструментария GUI. Если будет спрос на этот тип приложения, я, возможно, хотел бы его коммерциализировать.

Я не знаю о развертывании "реальных" приложений Python, хотя в прошлом я использовал py2exe с большим успехом. Как я буду запутывать код? Могу ли я каким-то образом развернуть только байт-код?

Идеальное решение не поставило бы под угрозу мою интеллектуальную собственность (исходный код), не требовало бы прямой установки Python (хотя я уверен, что он должен будет иметь встроенный интерпретатор) и будет кросс-платформенным (Windows, Mac и Linux). Кто-нибудь знает какие-либо инструменты или ресурсы в этой области?

Спасибо.

4b9b3361

Ответ 1

Вы можете распространять скомпилированный байт-код Python (.pyc файлы) вместо источника. Вы не можете предотвратить декомпиляцию в Python (или любой другой язык, действительно). Вы можете использовать обфускатор, например pyobfuscate, чтобы раздражать конкурентов для расшифровки вашего декомпилированного источника.

Как говорит Алекс Мартелли в этом потоке, если вы хотите сохранить секретный код, вы не должны запускать его на других пользователях машины.

IIRC, в прошлый раз, когда я использовал cx_Freeze, он создал DLL для Windows, которая устранила необходимость в собственной установке Python. Это, по крайней мере, стоит проверить.

Ответ 2

Ничего себе, там много вопросов:

  • Можно запустить файл байт-кода (.pyc) непосредственно из интерпретатора Python, но я не видел доступных инструментов обфускации байт-кода.

  • Я не знаю ни одного решения "все в одном", но:

    • Для Windows вы можете использовать NSIS (http://nsis.sourceforge.net/Main_Page). Проблема здесь в том, что, хотя OSX/* nix поставляется с python, Windows этого не делает. Если вы не хотите создавать двоичный файл с py2exe, я не уверен, какие проблемы с лицензированием будут связаны с распространением среды выполнения Python (не говоря уже о технических).

    • Вы можете упаковать дистрибутив OS X с использованием формата "bundle", а в NIX есть собственные соглашения для установки программного обеспечения - обычно это "make install" script.

Надеюсь, что это было полезно.

Ответ 3

Может быть, IronPython может что-то предложить? Уверен, что эти файлы .exe/.dll могут быть заблокированы. Не уверен, как такие функции работают на моно, поэтому не знаю, как это работает на Linux/OS X...

Ответ 4

Я использую py2exe с хорошим успехом в Windows. Код нужно немного изменить, чтобы анализ кода собирал все необходимые модули, но кроме этого он работает.

Что касается Linux, существует несколько важных форматов распространения:

  • DEB (Debian, Ubuntu и другие производные)
  • RPM (RedHat, Fedora, openSuSE)

DEB не особенно сложно сделать, особенно если вы уже используете distutils/setuptools. Некоторые подсказки приведены в политическом документе, примеры для упаковки приложений Python можно найти в репозиторий.

У меня нет опыта работы с RPM, но я уверен, что есть достаточно примеров, которые можно найти.

Ответ 5

Попробуйте использовать scraZ obfuscator (http://scraZ.me). Это обфускатор для байт-кода, а не для исходного кода. У бесплатной версии есть хорошие, но не идеальные методы обфускации. PRO версия имеет очень сильную защиту для байт-кода. (после обфускации байт-кода декомпиляция невозможна)