Pip install: несколько индексов содержат одну и ту же версию пакета – какой из них используется?Python

Программы на Python
Ответить
Anonymous
 Pip install: несколько индексов содержат одну и ту же версию пакета – какой из них используется?

Сообщение Anonymous »

Я работаю с несколькими (частными) реестрами pip (например, GitLab). Мой pip.conf выглядит так:

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

[global]
index-url = url.to.registry_1/pypi/simple
extra-index-url = url.to.registry_2/pypi/simple
Оба реестра содержат один и тот же пакет с одной и той же версией:



реестр
имя пакета
версия



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

registry_1

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

package-b

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

registry_2

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

package-b


Когда я запускаю:

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

pip install -vvv package-b==0.2.0
pip собирает кандидатов из оба реестров и устанавливает один из них. Пример фрагмента журнала:

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

Found link package_b-0.2.0-py3 (from registry_1)
Found link package_b-0.2.0-py3 (from registry_2)
Collecting package-b==0.2.0
Using cached package_b-0.2.0-py3-none-any.whl
Successfully installed package-b-0.2.0
Я понимаю, что pip обычно выбирает самую старшую версию из всех найденных кандидатов (см. документацию).

Но в этом случае оба кандидата имеют одинаковое имя и версию, поэтому выбор на основе версии не помогает.
Мой вопрос:

Как pip выбирает между идентичными дистрибутивами name==version, расположенными в разных дистрибутивах индексы?
В документации сказано:

"В местах поиска нет приоритета; выбирается лучший подходящий кандидат".

Но это не поясняет, как ведет себя pip, когда несколько кандидатов одинаково лучшие.

Существует ли официальное правило для решения тай-брейка? Например:
  • предпочитаете index-url, а не extra-index-url?
  • предпочитаете первое найденное совпадение?
  • предпочитаете самую новую временную метку загрузки?
  • алфавитный порядок?
  • поведение кэша?
Или pip просто обрабатывает оба пакета package-b==0.2.0 являются полностью взаимозаменяемыми, что означает, что исходный реестр не определен/не гарантирован?

Подробнее здесь: https://stackoverflow.com/questions/798 ... ne-is-used
Ответить

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

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

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

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

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