Можно ли настроить виртуальный репозиторий Google Artifact Python на Python, чтобы «установка pip» учитывала приоритеты Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Можно ли настроить виртуальный репозиторий Google Artifact Python на Python, чтобы «установка pip» учитывала приоритеты

Сообщение Anonymous »

В документации по реестру Google Artifact для управления пакетами Python указано, что при запуске pip install PACKAGE для виртуального репозитория:

Если вы запрашиваете версия, которая доступна более чем в одном вышестоящем репозитории, Artifact Registry выбирает вышестоящий репозиторий для использования на основе настроек приоритета, настроенных для виртуального репозитория.

Это работает так, как описано при указании версию пакета с ==, но при использовании других спецификаторов требований (или без спецификаторов требований) pip устанавливает самую высокую версию, соответствующую спецификатору, во всех восходящих потоках, полностью игнорируя настройки приоритета.
Как мне настроить виртуальный репозиторий, чтобы получать пакеты, существующие в восходящем потоке с более высоким приоритетом, только из этого восходящего потока, независимо от доступных версий в восходящем потоке с более низким приоритетом?
Например, я создал стандарт репо для хранения моих собственных пакетов (

Код: Выделить всё

python-repo
), удаленный репозиторий для доступа к PyPi (

Код: Выделить всё

pypi-proxy
), а также виртуальное репозиторий, который объединяет репозиторий Python и pypi-прокси с соответствующими приоритетами 100 и 10 (

Код: Выделить всё

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" \
С помощью policy.json:

Код: Выделить всё

[{
"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
}]
Я настраиваю pip.conf и .pypirc так, чтобы они указывали на виртуальный-python-repo.
При использовании этой настройки, если я создаю новый проект с именем «sampleproject» (который уже существует в PyPi с версией от 1.2.0 до 4.0.0), я получаю следующее поведение:
Если я установлю версию 1.0.0, соберите и отправьте sampleproject-1.0.0 в python-repo:
  • Код: Выделить всё

    pip install sampleproject==1.0.0
    устанавливает версию 1.0.0 из python-repo
  • Код: Выделить всё

    pip install sampleproject
    устанавливает версию 4.0.0 из PyPi
Желаемое поведение - всегда устанавливать образец проекта из репозитория Python и игнорировать его. версии из pypi. Я знаю, что это невозможно только с помощью pip, но я надеялся, что виртуальное репо позволит обеспечить соблюдение таких политик.

Подробнее здесь: https://stackoverflow.com/questions/792 ... ry-so-that
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»