Рубрики
Без рубрики

Что я узнал из распределения приложения Python

Проблема Недавно нам нужно распространить нашу приложение Python Flask в контейнере Docker …. Tagged с Python, производство.

Проблема

Недавно нам нужно распространить нашу приложение 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 Файлы существуют.

Рекомендации

Оригинал: “https://dev.to/dongchaochen/what-i-learned-from-python-app-distribution-5h96”