<p>o pip sai com sucesso, apesar da restrição incompatível</p>

Criado em 3 set. 2019  ·  3Comentários  ·  Fonte: pypa/pip

Ambiente

  • versão pip: 19.2.3
  • Versão Python: 3.7.4
  • SO: macOS 18.7.0

Isso também foi reproduzido usando docker run python:3 .

Descrição

pip instala um pacote com dependências quebradas, se um arquivo de restrições especifica uma versão incompatível. Uma mensagem de erro é exibida, mas o código de saída é 0 .

Por exemplo, environs 5.2.1 requer marshmallow>=2.7.0 , mas pip o instala com marshmallow 2.6.0 se o último for especificado em um arquivo de restrições.

Comportamento esperado

pip não deve instalar o pacote e sair com falha.

Como reproduzir

  1. Crie constraints.txt com marshmallow==2.6.0
  2. Crie requirements.txt com environs==5.2.1
  3. Execute pip install -r requirements.txt -c constraints.txt

Saída

$ 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

Todos 3 comentários

Este é essencialmente o mesmo que # 988 (consulte também: # 5137).

Pip descobre os requisitos encontrados pela primeira vez (embora isso esteja sujeito a alterações sem aviso prévio). Quando o arquivo de requisitos e o arquivo de restrições são analisados, terminamos com environs==5.2.1 como um requisito e marshmallow==2.6.0 como uma restrição. Quando environs está sendo processado, marshmallow é percebido como uma dependência e a entrada existente ( marshmallow==2.6.0 ) é marcada como um requisito, e a versão existente é a usada para a instalação . Acho que usar o valor fornecido pelo usuário (mesmo que apenas como uma restrição) é provavelmente o comportamento mais correto que podemos ter aqui.

O erro rastreado é o mesmo que seria rastreado para pip install environs==5.2.1 marshmallow==2.6.0 simples ou invocações separadas como pip install environs==5.2.1 && pip install marshmallow==2.6.0 .

Isso foi adicionado em # 5000. A razão pela qual o código de saída não é 1 é a compatibilidade com versões anteriores.

Se você quiser saber programaticamente que isso está acontecendo, execute pip check .

Este problema foi encerrado automaticamente porque não houve resposta ao nosso pedido de mais informações do autor original. Com apenas as informações que estão atualmente no problema, não temos informações suficientes para tomar medidas. Entre em contato se tiver ou encontre as respostas de que precisamos para que possamos investigar mais a fundo.

Esta página foi útil?
0 / 5 - 0 avaliações