Как перейти от 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