使用 zc.buildout 指定自定义 PYTHON_EGG_CACHE 目录?

Posted

技术标签:

【中文标题】使用 zc.buildout 指定自定义 PYTHON_EGG_CACHE 目录?【英文标题】:Specify a custom PYTHON_EGG_CACHE dir with zc.buildout? 【发布时间】:2011-04-30 20:06:49 【问题描述】:

在尝试部署大量使用 zc.buildout 的项目时,我们遇到了问题 - 特别是我们发现他们想将他们的 PYTHON_EGG_CACHE 目录放在整个节目中。我们想以某种方式将此目录设置为与内置项目相同级别的目录,其中可以找到eggs

网上有人说Plone项目可以这样做,但是没有Plone可以做到吗?

是否有一些配方可以设置环境变量,以便我们可以在./bin 中设置PYTHON_EGG_CACHE 可执行文件?

【问题讨论】:

【参考方案1】:

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

[buildout]
...
unzip = true

如果您的系统 python 安装了压缩鸡蛋,但仍需要解压缩以访问资源,并且在脚本中设置 PYTHON_EGG_CACHE 是您唯一的选择(而不是为您的用户设置环境变量),您可以尝试使用 @ zc.recipe.egg 的 987654322@ 选项可将任意 Python 代码添加到您的脚本中:

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

【讨论】:

我认为 '/tmp/python_eggs' 应该用引号括起来,所以: os.environ['PYTHON_EGG_CACHE'] = '/tmp/python_eggs' @seddonym:是的,对不起,这是一段python代码,字符串应该被引用。【参考方案2】:

我不确定你的意思。您通常拥有的三个选项:

默认情况下,Buildout 将鸡蛋存储在 buildout 目录中名为 eggs/ 的目录中。

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

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

其中一个(尤其是最后一个)是否实现了您想要的?

并且:不要在生成的bin/* 文件中乱扔鸡蛋。让buldout挑鸡蛋,这就是它的目的。

【讨论】:

PYTHON_EGG_CACHE 与eggs 目录不同。需要解压缩才能获取某些资源的压缩鸡蛋会在该目录中解压缩。见***.com/questions/2192323/…

以上是关于使用 zc.buildout 指定自定义 PYTHON_EGG_CACHE 目录?的主要内容,如果未能解决你的问题,请参考以下文章

zc.buildout构建项目时报错‘AttributeError: '_NamespacePath' object has no attribute 'sort'’(

Python 构建工具 buildout 的介绍与使用

buildout 和 setuptools 要求

Django 管理员身份验证失败

Django 1.8 和 syncdb / migrate 的 auth_user 错误

利用FUSE编写自定义的文件系统