11
Мой Python всегда со мной Кареев Григорий, Odin (Ingram Micro)

Мой Python всегда со мной!

  • Upload
    pynsk

  • View
    42

  • Download
    0

Embed Size (px)

Citation preview

Мой Python всегда со мнойКареев Григорий, Odin (Ingram Micro)

Введение

Рассмотрим:• Распространение приложений написанных на Python

• Создание переносимого Python окружения для любых нужд

Оставим в стороне:• Полностью подконтрольное окружение

• Виртуализацию

• Облака

• Сборку и распространение модулей Python

Распространение приложений написанных на Python

Правильный способ:

Вариант А:• Воспользоваться версией Python от поставщика ОС

• Дополнить ее недостающими модулями в виде пакетов ОС (rpm, deb, etc)

• Запаковать приложение в пакет или коллекцию пакетов

• Создать свой репозиторий для ОС (yum, deb, etc)

Вариант Б:• Собрать нужную версию Python с необходимыми модулями в виде

пакетов ОС (rpm, deb, msi, etc)

• Запаковать приложение в пакет или коллекцию пакетов

• Создать свой репозиторий для ОС (yum, deb, etc)

Распространение приложений написанных на Python

Правильный способ:

Плюсы:• Простота доставки приложения и его обновлений

• Выпуском обновлений безопасности занимается поставщик ОС

Минусы:• Необходимо поддерживать и тестировать приложение на всех

поддерживаемых версиях и архитектурах ОС

• Дополнительные расходы на содержание сборочного окружения

Распространение приложений написанных на Python

Альтернативные решения:

Solution Windows Linux Python 3 LicenseOne-file mode

Zipfile import

Eggspkg_resources

support

bbFreeze yes yes no MIT no yes yes yes

py2exe yes no yes MIT yes yes no no

pyInstaller yes yes yes GPL yes no yes no

cx_Freeze yes yes yes PSF no yes yes no

pynsist yes no yes MIT no yes yes yes

Nuitka yes yes yes Apache no yes yes yes

Распространение приложений написанных на Python

Альтернативные решения:

Плюсы:• Простота сборки приложения: собрали один раз – используем везде*

Минусы:• Обновления безопасности к используемым библиотекам необходимо

выпускать самостоятельно

• При использовании некоторых решений все еще необходимо создавать дистрибутив приложения самостоятельно

• (Windows) Не все решения упаковывают вместе с приложением Microsoft VC++ Runtime DLLs

Распространение приложений написанных на Python

* Почти везде:

Linux• Во всех решениях динамическое связывание с системными

библиотеками (libc, libpthread, libm, etc) остается, что может потребовать предварительной подготовки системы к использованию приложения (Например, для 32бит приложения доставить 32бит версии libc, libpthread, etc на 64бит систему)

Создание переносимого Python окружения

Windows:1. Берем нужную версию дистрибутива Python с официального сайта

2. Ставим

3. Дополняем необходимыми модулями при помощи pip

4. Подкладываем Microsoft VC++ Runtime DLLs

5. Копируем на “флешку”

Создание переносимого Python окружения

Linux:1. Берем CentOS 5 i386

2. Берем исходники Python нужной версии

3. Собираем с альтернативным префиксом пути:> ./configure --prefix=/opt/pythonNN

4. Дополняем необходимыми модулями при помощи pip (придется “поиграться” с LD_LIBRARY_PATH)

5. Копируем абсолютно все динамические библиотеки необходимые как самому Python интерпретатору так и его двоичным модулям (включая динамический загрузчик /lib/ld-linux.so.2) в каталог /opt/pythonNN/lib

6. Копируем на “флешку”

7. Используем:> /opt/pythonNN/lib/ld-linux.so.2 --library-path /opt/python27/lib /opt/pythonNN/bin/python

Контактная информация

Email: [email protected]

BitBucket: https://bitbucket.org/gkareev

СПАСИБО!