<p>pip успешно завершается, несмотря на несовместимое ограничение</p>

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

Среда

  • версия pip: 19.2.3
  • Версия Python: 3.7.4
  • ОС: macOS 18.7.0

Это также было воспроизведено с использованием docker run python:3 .

Описание

pip устанавливает пакет с нарушенными зависимостями, если в файле ограничений указана несовместимая версия. Отображается сообщение об ошибке, но код выхода 0 .

Например, environs 5.2.1 требует marshmallow>=2.7.0 , но pip устанавливает его с помощью marshmallow 2.6.0 если последнее указано в файле ограничений.

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

pip не должен устанавливать пакет и завершать работу с ошибкой.

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

  1. Создайте файл constraints.txt с помощью marshmallow==2.6.0
  2. Создайте файл requirements.txt с помощью environs==5.2.1
  3. Выполнить pip install -r requirements.txt -c constraints.txt

Выход

$ docker run --rm -ti python:3 sh
# python -V
Python 3.7.4
# pip -V
pip 19.2.3 from /usr/local/lib/python3.7/site-packages/pip (python 3.7)
# uname -a
Linux 4d4f16cc965f 4.9.184-linuxkit #1 SMP Tue Jul 2 22:58:16 UTC 2019 x86_64 GNU/Linux
# echo marshmallow==2.6.0 > constraints.txt
# echo environs==5.2.1 > requirements.txt
# pip install -r requirements.txt -c constraints.txt
Collecting environs==5.2.1 (from -r requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/5f/c9/6b576b8b374dfe78d9435988e6a53497822f31b9da5bdd446343ad1a4d1b/environs-5.2.1-py2.py3-none-any.whl
Collecting marshmallow==2.6.0 (from -c constraints.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/33/44/c3bdd4222909b6452ebe5c028ea5dbe7e9409307b3b933026218c677fcf1/marshmallow-2.6.0-py2.py3-none-any.whl (44kB)
     |████████████████████████████████| 51kB 729kB/s
Collecting python-dotenv (from environs==5.2.1->-r requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/57/c8/5b14d5cffe7bb06bedf9d66c4562bf90330d3d35e7f0266928c370d9dd6d/python_dotenv-0.10.3-py2.py3-none-any.whl
ERROR: environs 5.2.1 has requirement marshmallow>=2.7.0, but you'll have marshmallow 2.6.0 which is incompatible.
Installing collected packages: marshmallow, python-dotenv, environs
Successfully installed environs-5.2.1 marshmallow-2.6.0 python-dotenv-0.10.3
# echo $?
0
duplicate auto-locked awaiting response support

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

По сути, это то же самое, что и # 988 (см. Также: # 5137).

Пип определяет требования в первую очередь (хотя это может быть изменено без предварительного уведомления). Когда файл требований и файл ограничений анализируются, мы получаем environs==5.2.1 в качестве требования и marshmallow==2.6.0 в качестве ограничения. Когда обрабатывается environs , marshmallow отмечается как зависимость, а существующая запись ( marshmallow==2.6.0 ) помечается как требование, а существующая версия используется для установки. . Я думаю, что использование значения, предоставленного пользователем (даже если оно является ограничением), вероятно, является наиболее правильным поведением, которое мы можем здесь иметь.

Отслеживаемая ошибка такая же, как и для простого pip install environs==5.2.1 marshmallow==2.6.0 или отдельных вызовов, например pip install environs==5.2.1 && pip install marshmallow==2.6.0 .

Это было добавлено в # 5000. Причина, по которой код выхода не равен 1, - обратная совместимость.

Если вы хотите программно знать, что это происходит, вы хотите запустить pip check .

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

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