<p>pip beendet trotz inkompatibler Einschränkung erfolgreich</p>

Erstellt am 3. Sept. 2019  ·  3Kommentare  ·  Quelle: pypa/pip

Umfeld

  • Pip-Version: 19.2.3
  • Python-Version: 3.7.4
  • Betriebssystem: macOS 18.7.0

Dies wurde auch mit docker run python:3 reproduziert.

Beschreibung

pip installiert ein Paket mit unterbrochenen Abhängigkeiten, wenn eine Einschränkungsdatei eine inkompatible Version angibt. Es wird eine Fehlermeldung angezeigt, aber der Exit-Code lautet 0 .

environs 5.2.1 erfordert beispielsweise marshmallow>=2.7.0 , aber pip installiert es mit marshmallow 2.6.0 wenn letzteres in einer Einschränkungsdatei angegeben ist.

Erwartetes Verhalten

pip sollte das Paket nicht installieren und mit einem Fehler beenden.

So reproduzieren Sie

  1. Constraints.txt mit marshmallow==2.6.0 erstellen
  2. Erstelle Requirements.txt mit environs==5.2.1
  3. pip install -r requirements.txt -c constraints.txt

Ausgabe

$ 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

Alle 3 Kommentare

Dies ist im Wesentlichen dasselbe wie #988 (siehe auch: #5137).

Pip ermittelt die Anforderungen auf einer ersten Basis (obwohl sich dies ohne vorherige Ankündigung ändern kann). Wenn die Anforderungsdatei und die Einschränkungsdatei geparst werden, erhalten wir environs==5.2.1 als Anforderung und marshmallow==2.6.0 als Einschränkung. Wenn environs verarbeitet wird, wird marshmallow als Abhängigkeit erkannt und der vorhandene Eintrag ( marshmallow==2.6.0 ) wird als Voraussetzung markiert und die vorhandene Version wird für die Installation verwendet . Ich denke, die Verwendung des vom Benutzer bereitgestellten Werts (auch wenn nur als Einschränkung) ist wahrscheinlich das korrekteste Verhalten, das wir hier haben können.

Der verfolgte Fehler ist derselbe, der für ein einfaches pip install environs==5.2.1 marshmallow==2.6.0 oder separate Aufrufe wie pip install environs==5.2.1 && pip install marshmallow==2.6.0 .

Dies wurde in #5000 hinzugefügt. Der Grund, warum der Exitcode nicht 1 ist, ist die Abwärtskompatibilität.

Wenn Sie programmgesteuert wissen möchten, dass dies geschieht, sollten Sie pip check ausführen.

Dieses Problem wurde automatisch geschlossen, da unsere Anfrage nach weiteren Informationen vom ursprünglichen Autor nicht beantwortet wurde. Mit den Informationen, die derzeit in der Ausgabe enthalten sind, haben wir nicht genügend Informationen, um Maßnahmen zu ergreifen. Bitte wenden Sie sich an uns, wenn Sie die Antworten haben oder finden, die wir benötigen, damit wir weitere Nachforschungen anstellen können.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen