2010-10-26 15 views
1

Nous avons des problèmes lorsque nous essayons de déployer un certain nombre de projets qui utilisent zc.buildout - en particulier, nous constatons qu'ils veulent mettre leurs répertoires PYTHON_EGG_CACHE partout dans le spectacle. Nous aimerions en quelque sorte mettre ce répertoire à un même niveau que le projet intégré, où eggs peut être trouvé.Spécifiez un répertoire PYTHON_EGG_CACHE personnalisé avec zc.buildout?

Il est mentionné en ligne que cela peut être fait pour les projets Plone, mais est-il possible de le faire sans Plone?

Y a-t-il des recettes qui peuvent configurer une variable d'environnement afin que nous puissions définir les fichiers exécutables PYTHON_EGG_CACHE dans ./bin?

Répondre

0

Je ne suis pas sûr de ce que vous voulez dire. Trois options que vous avez normalement:

  • Buildout, par défaut, stocke les oeufs dans un répertoire appelé eggs/ dans votre répertoire de buildout.

  • Vous pouvez définir la variable eggs-dir à l'intérieur de la section [buildout] de votre buildout.cfg dans un répertoire. Dites-lui simplement où les placer.

  • Vous pouvez également définir cette même option dans .buildout/defaults.cfg dans votre répertoire personnel. De cette façon, vous pouvez définir un défaut pour tous vos projets. Pratique pour stocker tous vos œufs en un seul endroit: cela peut vous faire économiser beaucoup de temps de téléchargement, par exemple.

Est-ce que l'un de ceux-ci (en particulier le dernier) accomplit ce que vous voulez?

Et: ne traînez pas avec des oeufs dans les fichiers bin/* générés. Laissez buldout ramasser les oeufs, c'est son but.

+0

Le PYTHON_EGG_CACHE n'est pas le même que le répertoire des oeufs. Les œufs zippés qui nécessitent une décompression pour obtenir certaines ressources sont décompressés dans ce répertoire. Voir http://stackoverflow.com/questions/2192323/what-is-the-python-egg-cache-python-egg-cache –

4

Le PYTHON_EGG_CACHE est utilisé uniquement pour les œufs avec fermeture à glissière, votre meilleur pari est d'avoir zc.buildout installer tous les œufs nécessaires décompressés:

[buildout] 
... 
unzip = true 

Si votre python système a des œufs compressé installés qui nécessitent encore décompressé pour l'accès aux ressources et en définissant le PYTHON_EGG_CACHE dans vos scripts est votre seule option (par opposition à la définition de la variable d'environnement pour votre utilisateur), vous pouvez essayer d'utiliser l'option initialization de zc.recipe.egg pour ajouter du code Python arbitraire à vos scripts:

[a-part] 
recipe = zc.recipe.egg 
... 
initialization = 
    import os 
    os.environ['PYTHON_EGG_CACHE'] = '/tmp/python_eggs' 
+0

Je pense que '/ tmp/python_eggs' devrait être entouré de guillemets, donc: os. environ ['PYTHON_EGG_CACHE'] = '/ tmp/python_eggs' – seddonym

+1

@seddonym: oui, désolé, c'est une section de code python et la chaîne doit être entre guillemets. –