Проблема
Недавно нам нужно распространить нашу приложение Python Flask в Docker Container. Первоначально я использовал люк Для создания/тестирования нашего приложения по умолчанию Люк построить будет создавать распределение источника и колесо. Но мы не хотим распространять наш исходный код в нашем контейнере Docker, как мы можем защитить нашу интеллектуальную собственность?
Возможные варианты и проблемы
Вот несколько вариантов, которые обсуждались в Python Вики – Как защитить исходный код Python? Таким образом, у вас есть следующие варианты
- Используйте скомпилированный байт -код
- Сгенерированный .пью Файлы не портативны между разными версиями Python
- Вы все еще можете Decompyle PYC файл в обратную машину.
- Исполняемые создатели (или установщики)
- Вариант, как использовать Pyinstaller
- Но Pyinstaller в настоящее время не поддерживает Python 3.8 еще
- Программное обеспечение как услуга
- Развертывание того, как Google сделал.
- Развертывание только на заблокированном VMS (У клиента только API ACCES, нет доступа к консоли к хосту).
- Python исходный код -код
- Используйте инструмент, похожий на Парень
- Но я беспокоюсь о выступлении
- Использование модифицированного контейнера Docker, который не имеет среды оболочки или других механизмов для предотвращения доступа к файлам в рамках контейнера Docker.
- Никакая оболочка в Docker выглядит так, так как нам нужно Bash, чтобы выполнить программу, распределить задачи работы и т. Д.
- Разрешения блокировки файлов могут быть возможными
Решение
- Помимо исходного кода, когда вы создаете распределительный пакет, вы можете использовать Колесо или яйцо Формат, вот хорошее резюме Колесо против яйца
- Когда вы используете
$ python setup.py bdist_egg - exclude-source-files
Может помочь вам удалить исходные файлы в распределенном пакете, но файл яйца, который вам нужно использовать easy_install Для установки, которая устарела сейчас в Setuptools, рекомендуемый способ использует Пип Что нужно установить файл колеса. - Благодаря ответу Stackoverflow – Как исключить исходный код от Beist_wheel Python
python setup.py bdist_egg --exclude-source-files wheel convert dist/package-*.egg -d dist
который будет генерировать Dist/Package-*-py38-none-any.whl
Если вы не определили детали платформы.
- Наконец, вы можете использовать
PIP Установка пакета - * - PY38-None-no.whl
Чтобы установить пакет, который содержит только PYC файлы - Вы можете использовать
PIP Show
Чтобы проверить, где ваш пакет установлен, а также перейдите, хотя все папки, чтобы удвоить, не подтвердить исходный код*.py
Файлы существуют.
Рекомендации
- Простая установка в устаревших устаревших
- Колесо преобразует
- Создание встроенных распределений
- Установка пакетов
- Установка PIP
- Пик EasyInstall
- Пиковые питонегги
Оригинал: “https://dev.to/dongchaochen/what-i-learned-from-python-app-distribution-5h96”