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

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

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

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

Спасибо.

Как вы защищаете код Python? Ну ... stackoverflow.com/questions/261638/how-do-i-protect-python-c‌ ode /…

e-satis 15.08.2009 14:02
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
31
1
27 207
5

Ответы 5

Ух ты, там много вопросов:

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

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

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

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

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

Байт-код Python очень высокоуровневый и легко декомпилируется; распространение файлов .pyc на самом деле не является какой-либо формой защиты, на которую вы хотите полагаться.

Thomas Wouters 03.10.2008 00:11

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

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

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

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

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

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

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

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

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

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

Другие вопросы по теме