Как перейти от virtualenv к застройке?

Я пытаюсь переместить проект из 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/

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

Совет?

Ответ 1

Следующий рецепт установит торнадо как яйцо и создаст скрипт 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}

Ответ 2

Buildout и virtualenv фактически касательно связаны. Buildout на самом деле о развертывании программного обеспечения в ограниченной и контролируемой манере, где virtualenv - это инкапсуляция среды, в которой работает программное обеспечение python. Buildout предоставляет то, что virtualenv делает внутри себя, а затем немного оборачивается вокруг него.

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

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

Ответ 3

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