Почему pip install иногда выбирает несовместимую версию? - PullRequest
0 голосов
/ 17 марта 2020

В моем пакете python htrest (https://pypi.org/project/htrest/) у меня есть следующие требования:

requirements = [
    'htheatpump==1.2.1',
    'Flask==1.1.1',
    'flask-restx==0.1.1',
    'Flask-BasicAuth==0.2.0',
    # put package requirements here
]

При установке с использованием pip install htrest иногда происходит сбой при следующее сообщение:

flask-restx 0.1.1 has requirement werkzeug<=0.16.1, but you'll have werkzeug 1.0.0 which is incompatible.

Похоже, что пункт выбирает werkzeug==1.0.0 из-за требований Flask (Werkzeug>=0.15)

Collecting Werkzeug>=0.15 (from Flask==1.1.1->htrest)
  Using cached https://files.pythonhosted.org/packages/ba/a5/d6f8a6e71f15364d35678a4ec8a0186f980b3bd2545f40ad51dd26a87fb1/Werkzeug-1.0.0-py2.py3-none-any.whl

, хотя flask-restx требует werkzeug<=0.16.1.

С другой стороны, иногда pip выбирает подходящую версию werkzeug (0.16.1):

Collecting werkzeug<=0.16.1 (from flask-restx==0.1.1->htrest)
  Using cached https://files.pythonhosted.org/packages/c2/e4/a859d2fe516f466642fa5c6054fd9646271f9da26b0cac0d2f37fc858c8f/Werkzeug-0.16.1-py2.py3-none-any.whl

, чтобы соответствовать требованиям Flask и flask-restx.

Может кто-нибудь объяснить мне причину и как это исправить?

С уважением, Даниэль.

1 Ответ

1 голос
/ 17 марта 2020

По умолчанию команда pip install <package_name> всегда ищет последнюю версию пакета и устанавливает его. В то же время, он также ищет последние версии зависимостей , перечисленные в метаданных пакета, и устанавливает эти зависимости, чтобы убедиться, что пакет соответствует всем необходимым требованиям.

Если вы хотите Для установки предыдущей версии необходимо указать эту версию. В этой статье подробно рассказывается о том, как работает pip

В вашем случае вы должны действовать следующим образом:

pip3 uninstall Werkzeug        # uninstalling the current Werkzeug
pip3 install Werkzeug==0.16.1  # install specific version of Werkzeug
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...