Каковы ограничения распространения файлов .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«Без источников» может дать им некоторый уровень комфорта, поскольку для получения источников потребуется дополнительный шаг декомпиляции, даже если этот шаг несколько тривиален. Достаточно барьера, чтобы честные люди были честными.

Ответы на вопрос(3)

Решение Вопроса

would a file generated with Python 3.1.5 be compatible with Python 3.2.x?

Нет.

Or would a .pyc file generated with Python 2.7.3 be compatible with a Python 3.x release?

Вдвойне нет.

I'm considering distributing just the .pyc files without their corresponding .py sources.

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

 06 июл. 2012 г., 21:19
@ Левон: я не знаю, я не делаю глупостей, подобных этому.
 leedm77706 июл. 2012 г., 21:32
Иногда мир заставляет нас делать глупости. Спасибо за ответ!
 06 июл. 2012 г., 21:21
И все же я все равно проголосовал за тебя :-)
 06 июл. 2012 г., 21:19
Мне стало любопытно, есть ли (рекомендуемый или какой-либо) способ каким-то образом запутать код Python и распространить его?

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

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

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

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

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

Ваш ответ на вопрос