развертывание приложений python
возможно ли развернуть приложения python, чтобы вы не выпускали исходный код, и вам не нужно быть уверенным, что клиент установил python?
Я думаю, может быть, есть какой-то процесс установки, который может запустить приложение python только из .файлы pyc и общая библиотека, содержащая интерпретатор или что-то в этом роде?
в основном я стремлюсь получить преимущества разработки языка, такого как Python - высокая производительность и т. д. но не могу разглядеть как вы могли бы развернуть его профессионально для клиента, где вы не знаете, как настроена машина, и вы определенно не можете доставить источник.
как профессиональные программные дома, развивающиеся в python, делают это (или, может быть, ответ в том, что они этого не делают) ?
5 ответов
вы защищаете свой исходный код законно, а не технически. Распространение файлов py действительно не имеет большого значения. Единственное технологическое решение здесь не для доставки вашей программы (которая действительно становится все более популярной в эти дни, поскольку программное обеспечение предоставляется через интернет, а не полностью устанавливается локально чаще.)
Если вы не хотите, чтобы у пользователя был установлен Python, но хотите запустить Программы Python, вам нужно будет связать Python. Ваше сопротивление кажется мне странным. Java-программы должны либо связывать, либо предвидеть присутствие JVM. Программы C должны либо связывать, либо предвидеть присутствие libc (обычно последнее) и т. д. Нет ничего банального в использовании того, что вам нужно.
профессиональное программное обеспечение Python desktop связывает Python, либо через что-то вроде py2exe/cx_Freeze/какую-то внутреннюю вещь, которая делает то же самое, либо через встраивание Python (в этом случае Python поставляется как библиотека, а не исполняемый файл). Первый подход обычно намного мощнее и надежнее.
Да, можно сделать установочные пакеты. Ищите py2exe
, cx_freeze
и другие.
нет, невозможно сохранить исходный код полностью безопасным. Всегда есть способы декомпилировать.
Исходный исходный код можно тривиально получить из .pyc
файлы, если кто-то хочет это сделать. Запутывание кода затруднило бы работу с кодом.
Ну, это зависит от того, что вы хотите сделать. Если под " не выпускать исходный код "вы подразумеваете" клиент не должен иметь доступа к исходному коду каким-либо образом", Ну, вы ведете проигранную битву. В конце концов, даже программы, написанные на C, могут быть спроектированы наоборот. Если вы боитесь, что кто-то украдет у вас, заставьте их подписать контракт и подать в суд, если возникнут проблемы.
но если вы имеете в виду "клиент не должен заботиться о файлах python и не иметь возможности случайно получить доступ их", вы можете использовать решение, как cx_Freeze чтобы превратить приложение Python в исполняемый файл.
Я удивлен, что никто не упоминал об этом раньше, но на Cython кажется жизнеспособным решением этой проблемы. Это займет ваш код Python и transpile это в CPython совместимый код C. Вы также получаете небольшой прирост скорости (~25%, последний раз я проверял), так как он будет скомпилирован в машинный код вместо байтового кода Python. Вы все равно должны быть уверены, что у пользователя установлен Python (либо сделав его предварительным условием, вытолкнутым на пользователя, чтобы иметь дело с, или связывать его как часть процесса установки). Кроме того, вам нужно иметь хотя бы одну небольшую часть вашего приложения в чистом Python: крючок в основную функцию.
поэтому вам понадобится что-то основное, как это:
import cython_compiled_module
if __name__ == '__main__':
cython_compiled_module.main()
но это эффективно не утекает никаких деталей реализации. Я думаю, что использование Cython должно соответствовать критериям в вопросе, но оно также вводит дополнительную сложность компиляции в C, которая теряет часть легкого кросс-платформенного характера Python. Стоит это того или нет, зависит от вас.
Как заявляли другие, даже полученный скомпилированный код C может быть декомпилирован с небольшими усилиями, но он, вероятно, гораздо ближе к типу обфускации, на который вы изначально надеялись.
создайте веб-приложение на python. Тогда мир может использовать его через браузер с нулевой установкой.