2010-08-20 6 views
10

je tente de déplacer un projet de virtualenv à buildout, mais je ne pense pas que je l'ai saisi le concept de buildout. Tous les tutoriels que j'ai trouvé discutent buildout dans le contexte de l'utiliser avec Zope, que je n'utilise pas et donc ne peux pas voir comment continuer.Comment migrer de virtualenv à buildout?

Ma structure de fichier avec virtualenv est la suivante:

myapp/ 
    app.py 

Ce qui est exécuté à l'aide /path/to/venvs/myapp/bin/python /path/to/myapp/script.py.

Avec buildout, ma structure de fichier est:

myapp/ 
    app.py 
    bootstrap.py 
    buildout.cfg 

Courir python bootstrap.py et bin/buildout me donne ces fichiers supplémentaires:

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

A ce stade, je ne suis pas sûr comment "exécuter" mon application .

Conseil?

Répondre

3

La recette suivante, installer une tornade comme un œuf et de créer un python et un script myapp dans le répertoire bin avec le chemin de recherche correct pour trouver l'œuf tornade.

[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} 
3

Buildout et virtualenv sont en fait qu'accessoirement liés. Buildout concerne vraiment le déploiement de logiciels de manière contrôlée et contrôlée, où virtualenv consiste à encapsuler l'environnement dans lequel s'exécute le logiciel python. Buildout fournit ce que virtualenv fait en lui-même, puis s'en entoure un peu plus.

Pensez buildout comme la recette ensemble de la façon de prendre votre code et le déposer sur un système distant prêt à être exécuté. Une partie de ce processus commence par la création d'un bac à sable propre (ce que virtualenv peut également fournir), puis l'ajout de bibliothèques, de pièces et de pièces selon vos besoins. Je ne suis pas un expert de buildout, mais je m'attendais à ce que votre code principal python apparaisse sous "bin" dans votre structure de répertoire, et que vous l'invoquiez d'une manière ou d'une autre.