развертывание приложений Python - PullRequest
10 голосов
/ 24 февраля 2012

Возможно ли развертывание приложений на Python таким образом, чтобы вы не выпускали исходный код и вам не нужно было быть уверенным, что клиент установил python?

Я думаю, может быть, есть какая-то установкапроцесс, который может запускать приложение на Python только из файлов .pyc и общей библиотеки, содержащей интерпретатор или что-то в этом роде?

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

Как разрабатывается профессиональное программное обеспечениев Python сделать это (или, возможно, ответ, что они этого не делают)?

Ответы [ 5 ]

16 голосов
/ 24 февраля 2012
  1. Вы защищаете свой исходный код юридически , а не технологически .Распространение py-файлов на самом деле не имеет большого значения.Единственное технологическое решение здесь - это , а не для доставки вашей программы (которая на самом деле становится все более популярной в наши дни, поскольку программное обеспечение предоставляется через Интернет, а не полностью устанавливается локально).

  2. Если вы не хотите, чтобы у пользователя был установлен Python, но хотите запускать программы на Python, вам придется связать Python.Ваше сопротивление этому кажется мне довольно странным.Java-программы должны объединять или предвидеть присутствие JVM.Программы на Си должны либо связывать, либо ожидать присутствие libc (обычно последнего) и т. Д. Нет ничего хакерского в использовании того, что вам нужно.

  3. Профессиональное программное обеспечение Python для настольных ПК связывает Python, либо через что-то вродеpy2exe / cx_Freeze / некоторая внутренняя вещь, которая делает то же самое или посредством встраивания Python (в этом случае Python представляет собой библиотеку, а не исполняемый файл).Первый подход обычно намного более мощный и надежный.

6 голосов
/ 24 февраля 2012

Да, можно сделать установочные пакеты. Ищите py2exe, cx_freeze и другие.

Нет, невозможно сохранить исходный код в полной безопасности. Всегда есть способы декомпилировать.
Исходный исходный код можно легко получить из файлов .pyc, если кто-то захочет это сделать Запутывание кода затруднит выполнение чего-либо с кодом.

3 голосов
/ 18 августа 2015

Я удивлен, что никто не упомянул об этом раньше, но Cython кажется жизнеспособным решением этой проблемы.Он возьмет ваш код Python и переместит его в CPython-совместимый C-код.Вы также получаете небольшой прирост скорости (~ 25% в последний раз, когда я проверял), поскольку он будет скомпилирован в машинный код, а не только в байт-код Python.Вы все еще должны быть уверены, что у пользователя установлен Python (либо сделав его обязательным предварительным условием для пользователя, либо связав его как часть процесса установки).Кроме того, вам нужно иметь хотя бы одну небольшую часть вашего приложения на чистом Python: хук в основную функцию.

Так что вам нужно что-то базовое, как это:

import cython_compiled_module

if __name__ == '__main__':
    cython_compiled_module.main()

Но это эффективно не протекает детали реализации.Я думаю, что использование Cython должно соответствовать критериям, указанным в вопросе, но оно также вводит дополнительную сложность компиляции в C, что лишает некоторые из простых кроссплатформенности Python.Стоит ли это того или нет, решать только вам.

Как уже говорили другие, даже полученный скомпилированный код C может быть декомпилирован с небольшими усилиями, но он, вероятно, намного ближе к типу запутывания, которым вы былиизначально надеясь на.

3 голосов
/ 24 февраля 2012

Ну, это зависит от того, что вы хотите сделать.Если под «не публиковать исходный код» вы имеете в виду «клиент не должен иметь никакого доступа к исходному коду каким-либо образом», вы сражаетесь в проигрышной битве.В конце концов, даже программы, написанные на C, могут быть перепроектированы.Если вы боитесь, что кто-то украдет у вас, заставьте его подписать контракт и подайте в суд на него, если возникнут проблемы.

Но если вы имеете в виду, «клиент не должен заботиться о файлах Python и не сможет случайно получить к ним доступ».их ", вы можете использовать решение типа cx_Freeze , чтобы превратить ваше приложение Python в исполняемый файл.

1 голос
/ 24 февраля 2012

Создание веб-приложения на Python. Тогда мир сможет использовать его через браузер с нулевой установкой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...