Как перейти с virtualenv на buildout?

Я пытаюсь перенести проект с virtualenv на buildout, но не думаю, что понял всю концепцию buildout. Все учебники, которые я нашел, обсуждают buildout в контексте его использования с Zope, который я не использую и поэтому не вижу, как продолжить.

Моя файловая структура с virtualenv выглядит следующим образом:

myapp/
  app.py

Который запускается с использованием /path/to/venvs/myapp/bin/python /path/to/myapp/script.py.

С buildout моя файловая структура такова:

myapp/
  app.py
  bootstrap.py
  buildout.cfg

Запуск python bootstrap.py и bin/buildout дает мне эти дополнительные файлы:

myapp/
  bin/
    buildout
  eggs/
    setuptools-0.6c12dev_r80622-py2.6.egg
    tornado-1.0.1-py2.6.egg
  parts/

На данный момент я не уверен, как «запустить» мое приложение.

Совет?


person Phillip B Oldham    schedule 20.08.2010    source источник


Ответы (3)


Следующий рецепт установит торнадо как яйцо и создаст скрипт python и myapp в каталоге bin с правильным путем поиска, чтобы найти яйцо торнадо.

[buildout] 
parts = python 
eggs = tornado 
extra-paths = ${buildout:directory}

[python] 
recipe = zc.recipe.egg 
interpreter = python 
eggs = ${buildout:eggs} 
entry-points = myapp=app:main 
extra-paths = ${buildout:extra-paths}
person Michaelnt    schedule 22.08.2010

Сборка и virtualenv на самом деле косвенно связаны. Buildout действительно касается развертывания программного обеспечения ограниченным и контролируемым образом, а virtualenv — инкапсуляцией среды, в которой работает программное обеспечение Python. Buildout предоставляет то, что virtualenv делает внутри себя, а затем немного больше оборачивает его.

Думайте о компоновке как о наборе рецептов того, как взять ваш код и разместить его на удаленной системе, готовой к запуску. Некоторые из этих процессов начинаются с создания чистой песочницы (что также может предоставить virtualenv), а затем добавления библиотек, фрагментов и частей по мере необходимости.

Я не эксперт по сборке, но я ожидаю, что ваш основной код python появится в разделе «bin» в вашей структуре каталогов, и что вы каким-то образом будете вызывать его оттуда.

person heckj    schedule 22.08.2010

В нашем проекте мы также не используем Zope. Мы нашли время, чтобы написать введение для студентов о том, как организовать (и распространять через PyPI) их код с помощью zc.buildout и стандартных инструментов упаковки Python. Это может быть полезно для тех, кто читает эту тему: http://www.idiap.ch/software/bob/docs/releases/v1.2.2/sphinx/html/OrganizeYourCode.html

person André Anjos    schedule 04.07.2013