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

Каковы ограничения распространения файлов .pyc?

Я начал работать над коммерческим приложением на Python, и я взвешиваю свои варианты распространения приложения.

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

Являются ли файлы .pyc независимыми от базовой ОС? Например, будет ли файл .pyc, сгенерированный на 64-разрядной машине Linux, работать на 32-разрядной машине Windows?

Я обнаружил, что .pyc файл должен быть совместим с выпуском исправлений, но как насчет крупных и второстепенных выпусков? Например, будет ли файл, сгенерированный с Python 3.1.5, совместимым с Python 3.2.x? Или будет ли файл .pyc, сгенерированный с Python 2.7.3, совместимым с выпуском Python 3.x?

Edit:

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

4b9b3361

Ответ 1

Например, будет ли файл, сгенерированный с Python 3.1.5, совместимым с Python 3.2.x?

Нет.

Или может ли файл .pyc, сгенерированный с Python 2.7.3, быть совместимым с выпуском Python 3.x?

Достаточно нет.

Я рассматриваю возможность распространения только файлов .pyc без их соответствующих источников .py.

Байт-код Python является высокоуровневым и тривиально декомпилируемым.

Ответ 2

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

Вы можете использовать бинарный пакет, такой как py2exe/py2app/freeze. Я их никогда не пробовал, но кто-то мог декомпилировать их, если захочет.

Ответ 3

Как сказал Cat, файлы pyc не являются безопасными для перекрестной версии. Хотя то, что вы пытаетесь скрыть от пользователей, определяет, что вам нужно делать.

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

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