Если вы запрашиваете версия, которая доступна более чем в одном вышестоящем репозитории, Artifact Registry выбирает вышестоящий репозиторий для использования на основе настроек приоритета, настроенных для виртуального репозитория.
Это работает так, как описано при указании версию пакета с ==, но при использовании других спецификаторов требований (или без спецификаторов требований) pip устанавливает самую высокую версию, соответствующую спецификатору, во всех восходящих потоках, полностью игнорируя настройки приоритета.
Как мне настроить виртуальный репозиторий, чтобы получать пакеты, существующие в восходящем потоке с более высоким приоритетом, только из этого восходящего потока, независимо от доступных версий в восходящем потоке с более низким приоритетом?
Например, я создал стандарт репо для хранения моих собственных пакетов (
Код: Выделить всё
python-repo
Код: Выделить всё
pypi-proxy
Код: Выделить всё
virtual-python-repo
Код: Выделить всё
PROJECT_ID=my-project-123456
LOCATION=us-west1
gcloud artifacts repositories create python-repo --repository-format=python \
--location="$LOCATION" --description="local repo"
gcloud artifacts repositories create pypi-proxy --repository-format=python \
--location="$LOCATION" --description="PyPi proxy" \
--mode=remote-repository --remote-repo-config-desc="PyPi" \
--remote-python-repo=PYPI --project="$PROJECT_ID"
gcloud artifacts repositories create virtual-python-repo --repository-format=python \
--location="$LOCATION" --description="Virtual repo" \
--mode=virtual-repository \
--upstream-policy-file=policies.json --project="$PROJECT_ID" \
Код: Выделить всё
[{
"id": "python-repo",
"repository": "projects/my-project-123456/locations/us-west1/repositories/python-repo",
"priority": 100
},{
"id": "pypi-proxy",
"repository": "projects/my-project-123456/locations/us-west1/repositories/pypi-proxy",
"priority": 10
}]
При использовании этой настройки, если я создаю новый проект с именем «sampleproject» (который уже существует в PyPi с версией от 1.2.0 до 4.0.0), я получаю следующее поведение:
Если я установлю версию 1.0.0, соберите и отправьте sampleproject-1.0.0 в python-repo:
- устанавливает версию 1.0.0 из python-repo
Код: Выделить всё
pip install sampleproject==1.0.0
- устанавливает версию 4.0.0 из PyPi
Код: Выделить всё
pip install sampleproject
Подробнее здесь: https://stackoverflow.com/questions/792 ... ry-so-that