Сценарий python и зависимостей Bundle в один файл

У меня есть несколько сценариев, у которых была собственная копия некоторых функций, поэтому я извлек эти функции в модуль и имел скрипты, импортирующие функцию. Этот скрипт должен быть скопирован на кучу серверов Linux и выполнен. Когда скрипты работали автономно, я бы просто скопировал файлы на серверы и выполнил «python».

У меня есть центральный сервер управления, который будет копировать и запускать скрипты на разных серверах.

Я читал о яйцах python, но мог бы использовать некоторые рекомендации по методу. То, как я делаю это сегодня, – это скопировать и просто запустить скрипт python. Поскольку это работает отлично, я думал, возможно, есть способ связать сами скрипты с внутренним модулем, на котором они зависят, скопируйте пакет на серверы и выполните их. Не понимаю, зачем мне нужно что-либо устанавливать с помощью «pip».

Теперь, какую настройку вы бы рекомендовали ребятам? Должен ли я строить яйца на своем локальном компьютере и сервер управления копирует файл яйца на серверы? Я бы предпочел скопировать все, что нужно серверу, с сервера управления, вместо того, чтобы серверы сами вытягивали зависимости, так что мне не придется пробивать больше отверстий для всех брандмауэров. Поскольку яйцам обычно нужно вытягивать зависимости, возможно, яйца – это не путь?

На большинстве моих серверов работает python 2.6, но у меня есть некоторые запущенные python 2.4 и 3.2.

Привет, Кеннет

2 Solutions collect form web for “Сценарий python и зависимостей Bundle в один файл”

Возможно, вы захотите рассмотреть возможность использования библиотеки PEX в Twitter, которая может создавать исполняемые файлы из пакетов python: https://pex.readthedocs.org/en/latest/whatispex.html

.pex-файлы просто тщательно создаются zip-файлами с #! / usr / bin / env python и специальными __main.py__

Обновление 2016 : универсал помогает создавать пакеты колес с зависимостями для автономной установки.


Для простых проектов хранение всех источников в одной папке и копирование в целом достаточно. Вы можете использовать git для перевода вашего кода в центральный репозиторий и вытащить его на свой сервер, не создавая никаких пакетов. Fabric and Ansible – это два инструмента, которые могут помочь вам автоматизировать процесс развертывания. (Например, удаленно запускайте git pull и удалите все ваши файлы pyc ).

Если у вас есть общие зависимости между проектами, пип и колеса – это современные альтернативы яйцам:

Вы можете создать простой пакет, содержащий все зависимости, которые вы хотите установить.

 $ tempdir=$(mktemp -d /tmp/wheelhouse-XXXXX) $ pip wheel -r requirements.txt --wheel-dir=$tempdir $ cwd=`pwd` $ (cd "$tempdir"; tar -cjvf "$cwd/bundled.tar.bz2" *) 

После того, как у вас есть пакет, его можно удалить, используя:

 $ tempdir=$(mktemp -d /tmp/wheelhouse-XXXXX) $ (cd $tempdir; tar -xvf /path/to/bundled.tar.bz2) $ pip install --force-reinstall --ignore-installed --upgrade --no-index --use-wheel --no-deps $tempdir/* 

(Из документов pd )

  • Что такое хорошая библиотека компьютерного зрения для Python, которая позволит мне найти лица в видео Flash / HTML5?
  • pip: Почему иногда устанавливаются как яйцо, иногда устанавливаются как файлы
  • Почему easy_install извлекает некоторые яйца python, а не другие?
  • Что такое яйцо Питона?
  • Где можно скачать бинарные яйца с psycopg2 для Windows?
  • Могу ли я превратить яйцо в колесо?
  • `pip freeze` прерывается с установкой пакета
  • Python: Если есть несколько версий яиц одного и того же пакета, как мне импортировать именно ту версию, которая мне нужна?
  • Python - лучший язык программирования в мире.