2010-10-26 59 views
1

我们在尝试部署多个使用zc.buildout的项目时遇到了问题 - 具体而言,我们发现他们希望在整个演出中放置PYTHON_EGG_CACHE目录。我们希望以某种方式将此目录设置为与内置项目相同的目录,其中eggs可以找到。用zc.buildout指定一个自定义PYTHON_EGG_CACHE目录?

有一些在线提到,这可以为Plone项目完成,但是可以在没有Plone的情况下执行此操作吗?

是否有一些食谱可以设置环境变量,所以我们可以设置PYTHON_EGG_CACHE可执行文件在./bin

回答

0

我不确定你的意思。您通常有三种选择:

  • 扩建,默认情况下,存储在一个名为eggs/你的扩建目录目录里面的鸡蛋。

  • 您可以在buildout.cfg的[buildout]部分中将eggs-dir变量设置为某个目录。只要告诉它在哪里放置它们。

  • 您还可以在主目录内的.buildout/defaults.cfg中设置非常相同的选项。这样你可以为你的所有项目设置一个默认值。方便将所有鸡蛋存储在一个地方:例如,可以节省大量下载时间。

其中一个(特别是最后一个)是否完成你想要的?

并且:不要在生成的bin/*文件中弄脏鸡蛋。让buldout选择鸡蛋,这是它的目的。

+0

PYTHON_EGG_CACHE与eggs目录不同。需要解压缩才能获得某些资源的压缩鸡蛋会在该目录中解压缩。请参阅http://stackoverflow.com/questions/2192323/what-is-the-python-egg-cache-python-egg-cache – 2011-01-14 18:40:01

4

的PYTHON_EGG_CACHE仅用于压缩鸡蛋,最好的办法是让zc.buildout安装所有必需的鸡蛋解压:

[buildout] 
... 
unzip = true 

如果您的系统Python有拉链安装鸡蛋仍然需要解压的资源访问,并且在脚本中设置PYTHON_EGG_CACHE是您唯一的选择(与为用户设置环境变量相反),您可以尝试使用zc.recipe.egg的initialization选项向脚本中添加任意Python代码:

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

我认为'/ tmp/python_eggs'应该用引号括起来,所以: os。 environ ['PYTHON_EGG_CACHE'] ='/ tmp/python_eggs' – seddonym 2013-11-06 10:22:31

+1

@seddonym:是的,很抱歉,这是一段python代码,应该引用该字符串。 – 2013-11-06 10:59:48