Укажите собственный каталог PYTHON_EGG_CACHE с помощью zc.buildout?
-
26-09-2019 - |
Вопрос
У нас возникают проблемы при попытке развернуть ряд проектов, использующих zc.buildout. В частности, мы обнаруживаем, что они хотят разместить свои PYTHON_EGG_CACHE
каталоги по всему шоу.Мы хотели бы каким-то образом установить этот каталог на тот же уровень, что и встроенный проект, где eggs
может быть найден.
В Интернете упоминается, что это можно сделать для проектов Plone, но возможно ли это сделать без Plone?
Есть ли какие-нибудь рецепты, которые могут настроить переменную среды, чтобы мы могли установить PYTHON_EGG_CACHE
исполняемые файлы в ./bin
?
Решение
Я не уверен, что ты имеешь в виду. Три варианта, которые вы обычно имеете:
Создание, по умолчанию хранит яйца в каталоге под названием
eggs/
Внутри вашего каталога сборка.Вы можете установить
eggs-dir
переменная внутри вашего сборки .CFG[buildout]
Раздел в какой-то каталог. Просто скажи, где разместить их.Вы также можете установить эту то же опцию в
.buildout/defaults.cfg
Внутри вашего домашнего каталога. Таким образом, вы можете установить по умолчанию для всех ваших проектов. Удобство для хранения всех ваших яиц в одном месте: например, можно сэкономить много времени загрузки.
Один из тех (особенно последних) выполняет то, что вы хотите?
И: не дергайте яйца в сгенерированном bin/*
файлы. Пусть Buldout выберет яйца, это его цель.
Другие советы
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'