Указать собственный каталог PYTHON_EGG_CACHE с помощью zc.buildout?

У нас возникли проблемы при попытке развернуть несколько проектов, использующих zc.buildout, в частности, мы обнаружили, что они хотят размещать свои каталоги PYTHON_EGG_CACHE по всему шоу. Мы хотели бы каким-то образом установить этот каталог на том же уровне, что и встроенный проект, где можно найти eggs.

В Интернете упоминается, что это можно сделать для проектов Plone, но возможно ли это сделать без Plone?

Есть ли какие-то рецепты, которые могут настроить переменную среды, чтобы мы могли установить исполняемые файлы PYTHON_EGG_CACHE в ./bin?


person Phillip B Oldham    schedule 26.10.2010    source источник


Ответы (2)


Я не уверен, что ты имеешь в виду. Три варианта, которые у вас обычно есть:

  • Buildout по умолчанию хранит яйца в каталоге с именем eggs/ внутри вашего каталога buildout.

  • Вы можете установить переменную eggs-dir внутри раздела [buildout] вашего buildout.cfg в какой-либо каталог. Просто скажите, где их разместить.

  • Вы также можете установить ту же самую опцию в .buildout/defaults.cfg внутри вашего домашнего каталога. Таким образом, вы можете установить значение по умолчанию для всех ваших проектов. Удобно для хранения всех ваших яиц в одном месте: например, это может сэкономить много времени на загрузку.

Выполняет ли один из них (особенно последний) то, что вы хотите?

И: не возитесь с яйцами в сгенерированных bin/* файлах. Пусть buldout собирает яйца, это его цель.

person Reinout van Rees    schedule 26.10.2010
comment
PYTHON_EGG_CACHE — это не то же самое, что каталог с яйцами. Заархивированные яйца, которые требуют распаковки для доступа к определенным ресурсам, распаковываются в этот каталог. См. stackoverflow.com/questions/2192323/ - person Martijn Pieters; 14.01.2011

PYTHON_EGG_CACHE используется только для заархивированных яиц, лучше всего, если zc.buildout установит все необходимые разархивированные яйца:

[buildout]
...
unzip = true

Если в вашем системном python установлены заархивированные яйца, которые по-прежнему требуют распаковки для доступа к ресурсам, и установка PYTHON_EGG_CACHE в ваших сценариях является вашим единственным вариантом (в отличие от установки переменной среды для вашего пользователя), вы можете попробовать использовать параметр initialization zc .recipe.egg для добавления произвольного кода Python в ваши скрипты:

[a-part]
recipe = zc.recipe.egg
...
initialization = 
    import os
    os.environ['PYTHON_EGG_CACHE'] = '/tmp/python_eggs'
person Martijn Pieters    schedule 14.01.2011
comment
Я думаю, что '/tmp/python_eggs' следует заключить в кавычки, поэтому: os.environ['PYTHON_EGG_CACHE'] = '/tmp/python_eggs' - person seddonym; 06.11.2013
comment
@seddonym: да, извините, это раздел кода Python, и строка должна быть заключена в кавычки. - person Martijn Pieters; 06.11.2013