KEMBAR78
Мой Python всегда со мной! | PDF
Мой 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 License
One-file
mode
Zipfile
import
Eggs
pkg_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: grigory.kareev@gmail.com
BitBucket: https://bitbucket.org/gkareev
СПАСИБО!

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

  • 1.
    Мой Python всегдасо мной Кареев Григорий, Odin (Ingram Micro)
  • 2.
    Введение Рассмотрим: • Распространение приложенийнаписанных на Python • Создание переносимого Python окружения для любых нужд Оставим в стороне: • Полностью подконтрольное окружение • Виртуализацию • Облака • Сборку и распространение модулей Python
  • 3.
    Распространение приложений написанныхна Python Правильный способ:  Вариант А: • Воспользоваться версией Python от поставщика ОС • Дополнить ее недостающими модулями в виде пакетов ОС (rpm, deb, etc) • Запаковать приложение в пакет или коллекцию пакетов • Создать свой репозиторий для ОС (yum, deb, etc)  Вариант Б: • Собрать нужную версию Python с необходимыми модулями в виде пакетов ОС (rpm, deb, msi, etc) • Запаковать приложение в пакет или коллекцию пакетов • Создать свой репозиторий для ОС (yum, deb, etc)
  • 4.
    Распространение приложений написанныхна Python Правильный способ:  Плюсы: • Простота доставки приложения и его обновлений • Выпуском обновлений безопасности занимается поставщик ОС  Минусы: • Необходимо поддерживать и тестировать приложение на всех поддерживаемых версиях и архитектурах ОС • Дополнительные расходы на содержание сборочного окружения
  • 5.
    Распространение приложений написанныхна Python Альтернативные решения: Solution Windows Linux Python 3 License One-file mode Zipfile import Eggs pkg_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
  • 6.
    Распространение приложений написанныхна Python Альтернативные решения:  Плюсы: • Простота сборки приложения: собрали один раз – используем везде*  Минусы: • Обновления безопасности к используемым библиотекам необходимо выпускать самостоятельно • При использовании некоторых решений все еще необходимо создавать дистрибутив приложения самостоятельно • (Windows) Не все решения упаковывают вместе с приложением Microsoft VC++ Runtime DLLs
  • 7.
    Распространение приложений написанныхна Python * Почти везде:  Linux • Во всех решениях динамическое связывание с системными библиотеками (libc, libpthread, libm, etc) остается, что может потребовать предварительной подготовки системы к использованию приложения (Например, для 32бит приложения доставить 32бит версии libc, libpthread, etc на 64бит систему)
  • 8.
    Создание переносимого Pythonокружения Windows: 1. Берем нужную версию дистрибутива Python с официального сайта 2. Ставим 3. Дополняем необходимыми модулями при помощи pip 4. Подкладываем Microsoft VC++ Runtime DLLs 5. Копируем на “флешку”
  • 9.
    Создание переносимого 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
  • 10.
  • 11.