Как распространить пакет без предоставления исходного кода в Python?

Учтите, что у меня есть пакет под названием "A", состоящий из нескольких модулей, а также вложенных пакетов. Теперь я хочу распространить этот пакет среди пользователей и не хочу, чтобы пользователь вообще видел мой код. Я слышал, что ".pyc" можно декомпилировать. Итак, мне просто интересно, какие могут быть другие альтернативы для этой проблемы.

Было бы здорово, если бы кто-то дал какие-то идеи на этот счет.

2 ответа

На самом деле у вас есть несколько вариантов. Во-первых, вы можете скомпилировать свой код в файлы pyc. Однако это можно обойти с помощью библиотеки дизассемблера dis, но для этого требуется много технических ноу-хау. Вы также можете использовать py2exe, чтобы упаковать его как exe-файл; это преобразует файл pyc в файл exe. Это все еще можно разобрать, но добавит дополнительный слой. У вас также есть несколько решений для шифрования; например, вы можете использовать pyconcrete для шифрования импортируемых файлов, пока они не будут загружены в память. Вы также можете просто зашифровать все приложение, а затем отправить с ним дешифратор и программу запуска как приложение C/C++ (или любой другой скомпилированный язык). Наконец, если вам удобно заставить python запускать собственный код C/C++, вы также можете поместить свой частный код в DLL или SO и вызвать его непосредственно для сценария.

Python - это интерпретируемый язык. Это означает, что если вы хотите распространять pyc-файлы, вам нужно будет запустить их в той же ОС / архитектуре, что и ваша, или вы столкнетесь с небольшими проблемами. Это и тот факт, что большая часть кода может быть в некоторой степени декомпилирована, побудили бы меня пересмотреть ваш вариант использования.

Можете ли вы вместо этого переосмыслить свой пакет услуг?

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