Развертывание приложения Pylons с частными зависимостями - PullRequest
2 голосов
/ 23 октября 2010

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

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

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

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

Ответы [ 3 ]

2 голосов
/ 23 октября 2010

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

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

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

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

1 голос
/ 30 октября 2010

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

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

В некоторых вы можете опубликовать Barсекретное местоположение, или, я не пробовал, но, возможно, работает базовая аутентификация HTTP:

setup(
    ...
    dependency_links = [
        "http://user:pass@example.com/private-repository/"
    ],
)
0 голосов
/ 30 октября 2010

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

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

...