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

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

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

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

2 ответа

Решение

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

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

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

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

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

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

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

[buildout]
...
unzip = true

Если в вашем системном питоне установлены молнии, для которых по-прежнему требуется разархивировать доступ к ресурсам, и установка 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'
Другие вопросы по тегам