2010-10-23 1 views
2

В моей организации у нас есть пара внутренних пакетов Python. Например, назовем их Foo и Бар. Оба они разрабатываются в отдельных хранилищах Git. Foo - приложение Pylons, которое использует определенные функции библиотеки от Бар. Также не публично распространено.Развертывание приложений Pylons с частно развитыми зависимостями

Когда мы развертываем Foo, мы обычно экспортируем последнюю версию из исходного кода и запускаем setup.py develop в пределах нашего virtualenv. Это работает нормально.

Проблема заключается в том, что мы будем нуждаться в каком-то способе распределения Бар для каждой среды, в которой мы разместим Foo. Мы, очевидно, не можем поместить «Bar» в setup_requires setup.py (поскольку easy_install не сможет найти его на любом веб-сайте). Я не могу найти способ автоматического получения/установки конфиденциально разработанных зависимостей.

Есть ли более простой способ управления этим? Я чувствую, что мне не хватает точки упаковки и распространения Python.

ответ

2

Вы можете создать репозиторий пакетов. Шаги в основном:

  1. Создать яйцо с setup.py bdist_egg
  2. Скопируйте созданный яйцо из дист в каталог обслуживаемой Apache
  3. Добавить URL в каталог выставленного Apache к easy_install команды с -f переключатель

Обратите внимание, что Ap ache не обязательно требуется, но автоматически генерирует список каталогов, с которым может справиться easy_install.

Если вы используете buildout, есть варианты конфигурации, чтобы сделать то же самое, что и -f, и я уверен, что есть что-то, что вы можете использовать и в pip.

0

В моей работе мы используем setuptools для создания пакетов, специфичных для ОС. Мы используем RedHat, поэтому вызываем bdist_rpm для создания пакета rpm. Мы находим, что это работает лучше, чем яйца, потому что мы можем делать управление зависимостями в пакетах как для библиотек python, так и для не-python.

Мы создаем rpms на нашей машине непрерывной интеграции и переместим их в репозиторий YUM, где их можно вытолкнуть с помощью обновления или обновления YUM.

1

При использовании Setuptools в setup.py вы можете указать HTTP, FTP и SVN места, где easy_install должны искать пакеты:

http://peak.telecommunity.com/DevCenter/setuptools#dependencies-that-aren-t-in-pypi

Вы можете опубликовать Бар в какой-то «секретном» месте, или , Я не пробовал, но, возможно, HTTP основные работы:

setup(
    ... 
    dependency_links = [ 
     "http://user:[email protected]/private-repository/" 
    ], 
) 
Смежные вопросы