Numpy: pip install auf Python 2.7 versucht, numpy 1.17 zu installieren, im Gegensatz zu NEP 14

Erstellt am 16. Aug. 2019  ·  15Kommentare  ·  Quelle: numpy/numpy

pip install numpy auf Python 2.7 versucht, numpy 1.17 zu installieren, wodurch die Unterstützung von Python 2.7 eingestellt wurde. Dies steht im Gegensatz zu der in NEP 14 beschriebenen Funktionalität, die besagt:

... pip install numpy auf Python 2 wird weiterhin die letzte funktionierende Version für immer geben...

Numpy/Python-Versionsinformationen:

Pip-Version: 19.2.2
Python: 2.7.15 |Anaconda, Inc.| (Standard, 23. Oktober 2018, 18:31:10) n[GCC 7.3.0]

32 - Installation

Hilfreichster Kommentar

Die eigentliche Frage ist, warum Sie Python 2.7 verwenden

Es gibt viele triftige Gründe, 2.7 weiterhin auszuführen, bitte beginne diese Debatte nicht hier.

Alle 15 Kommentare

Es scheint einen Fehler in pip oder setuptools zu geben, der dies verursacht. Können Sie versuchen, pip zu aktualisieren? (Siehe auch gh-13911, von dem ich erwarte, dass es ein Duplikat ist). Sie können pip wahrscheinlich mit pip selbst aktualisieren: python -m pip install --upgrade pip und python -m pip install --upgrade setuptools ?

Die eigentliche Frage ist, warum Sie Python 2.7 verwenden

Die eigentliche Frage ist, warum Sie Python 2.7 verwenden

Es gibt viele triftige Gründe, 2.7 weiterhin auszuführen, bitte beginne diese Debatte nicht hier.

Es scheint einen Fehler in pip oder setuptools zu geben, der dies verursacht. Können Sie versuchen, pip zu aktualisieren? (Siehe auch gh-13911, von dem ich erwarte, dass es ein Duplikat ist). Sie können pip wahrscheinlich mit pip selbst aktualisieren: python -m pip install --upgrade pip und python -m pip install --upgrade setuptools ?

Ich verwende die neuesten Versionen von beiden - pip 19.2.2 und setuptools 41.1.0.

Die eigentliche Frage ist, warum Sie Python 2.7 verwenden

Es gibt viele triftige Gründe, 2.7 weiterhin auszuführen, bitte beginne diese Debatte nicht hier.

Tatsächlich gibt es. In meinem Fall versuche ich, eine akademisch entwickelte wissenschaftliche Analysesoftware auszuführen, die nicht auf py3 portiert wurde.

Aber der Punkt hier ist nicht, ob ich Python 2.7 verwenden sollte oder nicht, es ist, dass numpy eine formale Aussage über die erwartete Funktionalität gemacht hat und es nicht die wahre Funktionalität ist. Das ist meiner Meinung nach der Fehler.

Mir ist gestern aufgefallen, dass pip pytest 5.0.1 für Python 2.7 nicht installieren würde, da 2.7 nicht unterstützt wurde, daher funktioniert pip in einigen Fällen korrekt. Ich frage mich, ob es irgendwo Informationen gibt, die für 1.17 aktualisiert werden müssen?

Sie können python2.7 -mpip versuchen, um sicherzustellen, dass pip weiß, welche Version ausgeführt wird. Es sieht auch so aus, als ob Sie Anaconda verwenden, was beim Mischen mit Pip eine Komplikation sein kann.

Was zeigt which pip ?

Hmmm, auf meinem Computer funktionieren pip 18.1 und setuptools 41.0.1 einwandfrei (sowohl binärer als auch kein binärer Modus). Ein Upgrade auf 19.2.2 und 41.1.0 ändert für mich nichts. Die Python-Version ist 2.7.16+ (Debian).

Wie Chuck bemerkt, gehe ich davon aus, dass Sie python2.7 -mpip anstelle von pip , um sicherzustellen, dass Sie die neueste installierte Version erhalten (falls Sie --user oder eine andere haben pip-Version aus irgendeinem Grund herum.)?

Es wäre wirklich gut zu verstehen, woran das genau liegt.

@IPetrik könnten Sie ein vollständig reproduzierbares Beispiel zusammenstellen? Sie verwenden Anaconda, also etwa:

conda create -n py27-empty
conda activate py27-empty
conda install pip
# Some diagnostics
which pip
pip --version
conda list setuptools

pip install numpy

Ich habe mehrere Varianten davon ausprobiert, kann dein Problem aber nicht reproduzieren.

Nachdem ich versucht hatte, ein Minimalbeispiel vorzubereiten, habe ich das Problem herausgefunden: Wir verwenden einen lokalen devpi-PyPI-Cache-Server, der sich in meinem pip.conf als extra-index-url . Wenn ich das aus meinem pip.conf entferne, funktioniert alles richtig... Ups.

Hmm, es scheint, dass Pip damit umgehen sollte. Gibt es etwas Besonderes an dem Cache und pip.conf ? Ich bin mit diesen Dingen nicht vertraut. @njsmith Irgendwelche Ideen?

Ich frage mich, ob der Devpi-Server die Metainformationen zu den verfügbaren Versionen für ein bestimmtes Paket nicht ordnungsgemäß weiterleitet.

Es wurde ein Grund gefunden, warum ein neuer pip versuchen kann, 1.17.0 für Python 2.7 zu installieren. Dies geschieht, wenn ein Paket setup_requires='numpy' . Dies liegt daran, dass easy_install aufgerufen wird, es sei denn, dieses Paket hat ein pyproject.toml (siehe https://github.com/pypa/pip/issues/6945#issuecomment-526479930).

Es gibt eine Problemumgehung: Führen Sie explizit pip install numpy vor pip install package-with-setup-requires .

Und die Lösung ist: Dieses Paket sollte ein pyproject.toml hinzufügen, wodurch dieses Problem für eine neue Version dieses Pakets behoben wird.

Es wurde ein Grund gefunden, warum ein neuer pip versuchen kann, 1.17.0 für Python 2.7 zu installieren. Dies geschieht, wenn ein Paket setup_requires='numpy' . Dies liegt daran, dass easy_install aufgerufen wird, es sei denn, dieses Paket hat ein pyproject.toml (siehe pypa/pip#6945 (Kommentar) ).

Es gibt eine Problemumgehung: Führen Sie explizit pip install numpy vor pip install package-with-setup-requires .

Ein konkreter Fall dafür ist pip install pycuda , der wie folgt fehlschlägt:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/tmp/pip-build-LYaxup/pycuda/setup.py", line 251, in <module>
    main()
  ...
  File "/usr/lib/python2.7/dist-packages/setuptools/sandbox.py", line 44, in _execfile
    code = compile(script, filename, 'exec')
  File "/tmp/easy_install-mp9NYd/numpy-1.19.0rc1/setup.py", line 182
    raise ValueError(f'Submodule {p} missing')
                                            ^
SyntaxError: invalid syntax

Die Problemumgehung ist einfach, wie @rgommers bemerkte: pip install numpy==1.16.6 (für die letzte Python 2.7-kompatible NumPy-Version) und versuchen Sie es dann erneut mit pip install pycuda .

Das ist ein pip Fehler, und ein sehr ernster, wie es aussieht. Das kann ich mit pip 20.1.1 reproduzieren. pip-2.7 install numpy installiert 1.16.6 pip-2.7 install numpy korrekt, sodass die Metadaten für numpy auf PyPI korrekt sind. pip-2.7 install pycuda versucht, das neueste numpy anstelle von 1.16.6 zu installieren.

Wahrscheinlich ist das schon gemeldet, ich habe in den nächsten Tagen keine Zeit, mich damit zu befassen. @artob Wenn Sie schauen, ob es ein Pip-Problem dafür gibt, und sonst eins öffnen, wäre das sehr willkommen.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen