Pip: Pip не обновляет слишком старые зависимости при установке нескольких пакетов

Созданный на 4 окт. 2019  ·  3Комментарии  ·  Источник: pypa/pip

Описание
Я буду обсуждать конкретные пакеты, поскольку это наблюдалось в реальных условиях (HypothesisWorks / hypothesis # 2113): мы недавно обновили нашу зависимость install_requires от attrs>=16.0 до attrs>=19.2 , на основание, что установка последней версии Hypothesis также обновит атрибуты пользователей.

  • pip install hypothesis действительно работает.
  • pip install pytest hypothesis работает, если старая версия attrs еще не установлена.

Похоже, что когда в команде установки указано несколько пакетов, совместимость уже установленных зависимостей оценивается только для первого перечисленного пакета, а для более поздних пакетов проверяется наличие, но не версия зависимостей. Это также влияет на использование файлов требований.

Ожидаемое поведение

Независимо от других пакетов, перечисленных для установки или уже присутствующих, pip install hypothesis должен привести либо к установке совместимого набора пакетов, либо к сообщению об ошибке, а не к нарушению среды.

Как размножаться

[tox]
skipsdist=True
[testenv]
deps =
    pip
    attrs==19.1.0
commands =
    ## Execute the problematic install command
    # pip install hypothesis  # works
    # pip install hypothesis pytest  # works
    pip install pytest hypothesis  #  fails, as does `pip install attrs hypothesis` !
    # pip install --upgrade pytest hypothesis  # works

    ## Check that the installed packages are compatible
    python -c "import hypothesis"

Затем запустите tox --recreate чтобы воссоздать виртуальную среду и выполнить команды.

(И спасибо всем, кто работает над pip , это очень ценно и высоко ценится 😍)

dependency resolution auto-locked bug

Все 3 Комментарий

Спасибо за подробности и удобный репродуктор! Очень признателен!

Это в основном # 988. Вкратце:

  • pip выводит сообщение красным цветом с ERROR заглавными буквами.
    ERROR: hypothesis 4.38.2 has requirement attrs>=19.2.0, but you'll have attrs 19.1.0 which is incompatible.
  • Используйте pip check как часть вашего CI, чтобы убедиться, что pip не совершил глупостей.
  • Чтобы избежать этого, используйте pip-tools (оборачивает pip более совершенным преобразователем) или pipenv (который использует pip-tools ) или poetry (у которого есть собственный преобразователь). причуда резолвера pip.

Ах я вижу! Я просмотрел последние несколько страниц с проблемами, но ничего так далеко ... Рад закрыть эту проблему как дубликат, поскольку я не думаю, что в ней есть дополнительная информация?

Закрытие дубликатом №988.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги