Pip: ImportError: Name 'SourceDistribution' kann nicht von 'pip._internal.distributions.source' importiert werden

Erstellt am 15. Okt. 2019  ·  101Kommentare  ·  Quelle: pypa/pip

Umfeld

CircleCI mit Conda, zB https://circleci.com/gh/peterjc/thapbi-pict/1073

  • pip-Version: pip-19.2.3 (von conda) aktualisiert auf 19.3 (über pip install --upgrade pip setuptools )
  • Python-Version: Python-3.7.3
  • Betriebssystem: Linux

Ich habe nur geringfügige Änderungen an meinem Code vorgenommen, aber heute sind die CircleCI-Builds während der Build-/Installationsphase meines Python-Tools kaputt gegangen - mehrere Zweige betroffen. Das Timing passt zur Veröffentlichung von pip 19.3 auf PyPI.

Beschreibung

Es scheint, dass eine kürzlich veröffentlichte Version von pip einige interne Dateien verschoben hat, meine Vermutung ist #6830.

Erwartetes Verhalten

So reproduzieren Sie

Vollständige Ausgabe auf https://circleci.com/gh/peterjc/thapbi-pict/1073, die ausgeführt wird https://github.com/peterjc/thapbi-pict/blob/9fcec2da60e6e6ae5cf7ee6ad4b53dcc3a40cfe7/.circleci/config.yml#L56

...
python setup.py sdist --formats=gztar
python setup.py bdist_wheel
pip install dist/thapbi_pict-*.whl

Ausgabe

Traceback (most recent call last):
  File "/opt/conda/bin/pip", line 7, in <module>
    from pip._internal import main
  File "/opt/conda/lib/python3.7/site-packages/pip/_internal/__init__.py", line 40, in <module>
    from pip._internal.cli.autocompletion import autocomplete
  File "/opt/conda/lib/python3.7/site-packages/pip/_internal/cli/autocompletion.py", line 8, in <module>
    from pip._internal.cli.main_parser import create_main_parser
  File "/opt/conda/lib/python3.7/site-packages/pip/_internal/cli/main_parser.py", line 11, in <module>
    from pip._internal.commands import (
  File "/opt/conda/lib/python3.7/site-packages/pip/_internal/commands/__init__.py", line 9, in <module>
    from pip._internal.commands.download import DownloadCommand
  File "/opt/conda/lib/python3.7/site-packages/pip/_internal/commands/download.py", line 10, in <module>
    from pip._internal.operations.prepare import RequirementPreparer
  File "/opt/conda/lib/python3.7/site-packages/pip/_internal/operations/prepare.py", line 9, in <module>
    from pip._internal.distributions import (
  File "/opt/conda/lib/python3.7/site-packages/pip/_internal/distributions/__init__.py", line 1, in <module>
    from pip._internal.distributions.source import SourceDistribution
ImportError: cannot import name 'SourceDistribution' from 'pip._internal.distributions.source' (/opt/conda/lib/python3.7/site-packages/pip/_internal/distributions/source/__init__.py)
Exited with code 1
auto-locked support

Hilfreichster Kommentar

Danke @PabloCastellano! Ich ignoriere jetzt nur Kommentare hier, da ich nicht möchte, dass meine Herzfrequenz höher wird. :)

Habe das Bugfix-Release gemacht. Wenn das geholfen hat, verwende 👍 in diesem Beitrag. Ansonsten schreiben Sie bitte einen Kommentar mit der Fehlermeldung.

Alle 101 Kommentare

Es wäre wirklich hilfreich zu wissen, was im CircleCI- (oder Conda?)-Setup diese internen APIs verwendet - die Reorganisation sollte keinen externen Code beeinflusst haben. Das Hauptproblem, das wir bisher kennen, ist die Reorganisation von main, die sich auf Wrapper-Skripte auswirkt, aber dieses sieht etwas anders aus. Jeder Einblick, den Sie geben können, wäre sehr nützlich, danke.

Bestätigt, dass das Entfernen von pip install --upgrade pip setuptools Probleme behoben hat,

https://github.com/peterjc/thapbi-pict/commit/4060404c1034a676439aef1369260022577a6627
https://circleci.com/gh/peterjc/thapbi-pict/1074

Dh Etwas ist kaputt gegangen, als ich von Pip 19.2.3 auf 19.3 aktualisiert habe

Ich bin nicht absichtlich mit dem CircleCI Python bereitgestellt, sondern die Conda Pythons zur Verfügung gestellt - ist es Wert von in Schalen pip ... auf python -m pip ... nur die Möglichkeit dieses Seins aufgrund Mischen Pythons zu entfernen?

Arbeite jetzt an einem Branch, fügte etwas mehr Protokollierung hinzu und kehrte zur defekten Version zurück:

https://circleci.com/gh/peterjc/thapbi-pict/1076

Dies bestätigt, dass der Traceback durch pip install dist/thapbi_pict-*.whl ausgelöst wird (Platzhalter für das einzelne frisch gebaute Rad).

Ich habe gerade bestätigt, dass from pip._internal import main mit einem einfachen Upgrade von pip funktioniert (unter Windows, also kein wirklich guter Vergleich, aber trotzdem...). Ich vermute also, dass in Ihrer Umgebung etwas nicht übereinstimmt, obwohl ich anhand der Rückverfolgung nicht erkennen kann, was es ist.

CircleCI kann einen Job mit SSH-Zugriff auf die VM erneut ausführen (nicht dass ich ihn jemals verwendet hätte). Theoretisch könnte dies also zum Debuggen verwendet werden, aber ich weiß nicht wirklich, wo ich anfangen soll.

Ich habe vorerst einen Workaround, und irgendwann wird Conda-Forge auch pip 19.3 gepackt haben, also scheint es eine niedrige Priorität zu haben, es sei denn, andere Leute sehen die gleiche Ausnahme?

OK Cool. Wenn Sie eine Problemumgehung haben, kann ich sie vorerst dort belassen. Wenn andere Kommentare hinzufügen, die darüber berichten, dass es an anderer Stelle passiert, können wir dann noch etwas nachforschen - vielleicht haben sie zusätzliche Informationen, die helfen.

Ich habe ein ähnliches Problem unter macOS, Python: 3.6.9. Der pip-Befehl auf meinem Terminal funktioniert nicht mehr. Irgendwelche Vorschläge?

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py

Das hat vorerst geholfen

Ich habe seit 1 Stunden das gleiche Problem mit CircleCI.
Die Versionsänderung des Docker-Images von python:3.7 zu python:3.7.4 behebt dieses Problem. (nur Workaround). so was:

version: 2
...
jobs:
  build:
    docker:
      - image: python:3.7.4
...

Benutzt einer von euch Caching? Ich denke, es ist möglich, dass sich einige Pip-Interna geändert haben und wenn Sie den Cache der alten Python-Version wiederherstellen, bricht Pip ab. Schlagen Sie vor, dass Sie Ihre Kreis-CI-Caches ungültig machen, indem Sie die keys ändern und sehen, was passiert ... (hat bei mir funktioniert!)

Wie von @bgkelly vorgeschlagen

Ja - das gleiche für mich - das Ändern des Cache-Schlüssels hat dies für die Projekte unseres Teams auf circleci gelöst. Danke @bgkelly

Das Ändern des Cache-Schlüssels hat es für mich nicht gelöst.
Das Hinzufügen eines Kommentars in requirements.txt hat es zwar getan, aber das ist keine gewünschte Lösung.

In Ordnung, das scheint also ein Caching-Problem für CircleCI zu sein.

Könnte sich bitte jemand an CircleCI-Leute wenden (über deren Support-Kanäle)? Es wäre toll, wenn sie sich das ansehen und sich vielleicht hier einmischen könnten.

Hey Leute,

Ich weiß wirklich nicht, ob Ihnen das in irgendeiner Weise hilft, aber ich habe die gleiche Fehlermeldung in meinem MSYS-Setup erhalten, als ich versuchte, WeasyPrint zu installieren.

Nach der Deinstallation von python3-pip und python3-setuptools habe ich alle pip-Ordner in /usr/lib/python3.7/site-packages/ gelöscht und beide neu installiert.. diesen spezifischen Fehler behoben.

pacman -R python3-pip python3-setuptools
rm -R /usr/lib/python3.7/site-packages/pip
rm -R /usr/lib/python3.7/site-packages/pip-19.3.1.dist-info
pacman -S python3-pip python3-setuptools

Um fair zu sein, bin ich jetzt auf Compiler-Probleme gestoßen... aber vielleicht konnte ich helfen....

Für den Fall, dass dies helfen kann, bin ich auf den Fehler in einem anderen Kontext gestoßen: beim Kopieren einer virtuellen Umgebung von einem Docker-Image in ein anderes in einem mehrstufigen Setup.

Das Quell-Image enthält eine weniger aktuelle Version von pip während das Ziel-Image eine aktualisierte Version von pip . Nach dem Kopieren des virtuellen Umgebungsverzeichnisses des Quell-Images in das Ziel-Image gibt es 2 verschiedene Verzeichnisse ( pip-<version>.dist-info ) unter der virtuellen Umgebung site-packages und pip funktioniert nicht der gleiche Fehler wie in dieser Ausgabe gemeldet.

Ich habe keine Zeit damit verbracht, das Problem zu beheben, da ich diesem Ansatz, der das Kopieren der virtuellen Umgebung in eine Umgebung beinhaltet, in der bereits Pakete installiert sind, etwas skeptisch bin.

Auf jeden Fall scheint es ein Paketkollisionsproblem zu sein.

Hoffe das hilft! :Lächeln:

Hallo
Ich glaube, wir sehen das gleiche Problem auf unserem internen ReadTheDocs-Server. Es führt beim Erstellen eines Dokuments den folgenden Befehl aus:

var/lib/readthedocs/repo/user_builds/some_doc/envs/latest/bin/python -m pip install --upgrade --cache-dir /var/lib/readthedocs/repo/user_builds/some_doc/.cache/pip pip

Wenn ich den Build-Cache über die ReadTheDocs-GUI-Schnittstelle lösche, ist der Build erfolgreich - aber nur bis zum nächsten Start eines Builds.

Hier ist das vollständige Protokoll:

Traceback (most recent call last):
  File "/usr/lib64/python3.6/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/usr/lib64/python3.6/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/var/lib/readthedocs/repo/user_builds/some_doc/envs/latest/lib/python3.6/site-packages/pip/__main__.py", line 16, in <module>
    from pip._internal import main as _main  # isort:skip # noqa
  File "/var/lib/readthedocs/repo/user_builds/some_doc/envs/latest/lib/python3.6/site-packages/pip/_internal/__init__.py", line 40, in <module>
    from pip._internal.cli.autocompletion import autocomplete
  File "/var/lib/readthedocs/repo/user_builds/some_doc/envs/latest/lib/python3.6/site-packages/pip/_internal/cli/autocompletion.py", line 8, in <module>
    from pip._internal.cli.main_parser import create_main_parser
  File "/var/lib/readthedocs/repo/user_builds/some_doc/envs/latest/lib/python3.6/site-packages/pip/_internal/cli/main_parser.py", line 11, in <module>
    from pip._internal.commands import (
  File "/var/lib/readthedocs/repo/user_builds/some_doc/envs/latest/lib/python3.6/site-packages/pip/_internal/commands/__init__.py", line 9, in <module>
    from pip._internal.commands.download import DownloadCommand
  File "/var/lib/readthedocs/repo/user_builds/some_doc/envs/latest/lib/python3.6/site-packages/pip/_internal/commands/download.py", line 10, in <module>
    from pip._internal.operations.prepare import RequirementPreparer
  File "/var/lib/readthedocs/repo/user_builds/some_doc/envs/latest/lib/python3.6/site-packages/pip/_internal/operations/prepare.py", line 9, in <module>
    from pip._internal.distributions import (
  File "/var/lib/readthedocs/repo/user_builds/some_doc/envs/latest/lib/python3.6/site-packages/pip/_internal/distributions/__init__.py", line 1, in <module>
    from pip._internal.distributions.source import SourceDistribution
ImportError: cannot import name 'SourceDistribution'

Hallo,

Ich bin auch auf das Problem gestoßen.

Betriebssystem: Debian GNU/Linux 10 (Linux 4.19.0-6-amd64)
Pip: 19.3.1
conda: 4.7.12
Python:3.7.4

$ pip
Traceback (letzter Anruf zuletzt):
Datei "/home/jiang/anaconda3/bin/pip", Zeile 7, in
aus pip._internal import main
Datei "/home/jiang/anaconda3/lib/python3.7/site-packages/pip/_internal/__init__.py", Zeile 40, in
aus pip._internal.cli.autocompletion import autocomplete
Datei "/home/jiang/anaconda3/lib/python3.7/site-packages/pip/_internal/cli/autocompletion.py", Zeile 8, in
aus pip._internal.cli.main_parser import create_main_parser
Datei "/home/jiang/anaconda3/lib/python3.7/site-packages/pip/_internal/cli/main_parser.py", Zeile 11, in
from pip._internal.commands import (
Datei "/home/jiang/anaconda3/lib/python3.7/site-packages/pip/_internal/commands/__init__.py", Zeile 9, in
from pip._internal.commands.download importieren DownloadCommand
Datei "/home/jiang/anaconda3/lib/python3.7/site-packages/pip/_internal/commands/download.py", Zeile 10, in
from pip._internal.operations.prepare import RequirementPreparer
Datei "/home/jiang/anaconda3/lib/python3.7/site-packages/pip/_internal/operations/prepare.py", Zeile 9, in
aus pip._internal.distributions import (
Datei "/home/jiang/anaconda3/lib/python3.7/site-packages/pip/_internal/distributions/__init__.py", Zeile 1, in
from pip._internal.distributions.source import SourceDistribution
ImportError: Name 'SourceDistribution' kann nicht von 'pip._internal.distributions.source' importiert werden (/home/jiang/anaconda3/lib/python3.7/site-packages/pip/_internal/distributions/source/__init__.py)

Wir konnten einen Workaround auf unserem lokalen ReadTheDocs-Server durchführen, indem wir den Build-Flow so änderten, dass er speziell die Pip-Version 19.2.3 verwendet. Jetzt führt ReadTheDocs den folgenden Build-Befehl aus - und wir haben kein Caching-Problem mehr:

/var/lib/readthedocs/repo/user_builds/some_doc/envs/latest/bin/python -m pip install --upgrade --cache-dir /var/lib/readthedocs/repo/user_builds/some_doc/.cache/pip pip==19.2.3

Genauer gesagt haben wir die lokale Datei python_environment.py aktualisiert, um eine bestimmte Pip-Version zu verwenden: https://github.com/readthedocs/readthedocs.org/blob/7212d6ff738b24a10fb0f4227d3fbdf69e5cab42/readthedocs/doc_builder/python_L322 .

cmd = pip_install_cmd + ['pip']

gewechselt zu:

cmd = pip_install_cmd + ['pip==19.2.3']

Ich weiß, dass mein Setup anders sein könnte als die meisten anderen, aber das Problem auf meiner Seite war auf das PIP sources/ Verzeichnis in der virtuellen Umgebung zurückzuführen (höchstwahrscheinlich PIP-Caching-Probleme oder so). Lassen Sie mich erklären:
Wenn Sie das Verzeichnis user_builds/project/envs/ für ein Projekt löschen und neu erstellen, funktioniert es, aber nur, bis Sie mit dem erneuten Erstellen des Verzeichnisses envs/ wieder beginnen. Ich habe viel Zeit damit verbracht, das Problem zu debuggen, und es stellte sich heraus, dass das Verzeichnis user_builds/project/envs/ (oder etwas darin) Probleme verursachte. Also habe ich weitere Tests durchgeführt, um herauszufinden, dass es das Verzeichnis user_builds/project/envs/latest/lib/python3.6/site-packages/pip/_internal/distributions/source/ speziell Probleme verursachte. Ich habe das Verzeichnis user_builds/project/envs/latest/lib/python3.6/site-packages/pip/_internal/distributions/source/ , neu erstellt und alles war in Ordnung. Ich habe es wieder aufgebaut und es ist fehlgeschlagen. Ich habe das Verzeichnis user_builds/project/envs/latest/lib/python3.6/site-packages/pip/_internal/distributions/ erneut überprüft und festgestellt, dass source/ vorhanden war. Also bin ich zu meiner globalen Python-Installation gegangen und habe das Verzeichnis /path/to/lib/python3.6/dist-packages/pip/_internal/distributions/source/ aus PIP verschoben, das Verzeichnis user_builds/project/envs/latest/lib/python3.6/site-packages/pip/_internal/distributions/source/ aus der Projektumgebung entfernt und neu erstellt. Dies wurde erfolgreich erstellt und nicht über den Ordner source/ kopiert, perfekt. Also, jedes Mal, wenn die Dokumente erstellt werden, werden sie ohne Fehler erstellt. Ich hoffe, das hilft jemand anderem.

Beifall.

Versuche dies:

1.curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
2.python get-pip.py

@Guru36

Habe es so oft versucht, ohne Erfolg. Das musst du sowieso am Anfang machen, damit das nicht hilft. Danke trotzdem.

Beifall.

Versuche dies:

1.curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
2.python get-pip.py

Danke schön

Ich habe jetzt Probleme damit bei der Version 0.20.

Schauen Sie sich das jetzt an, Leute. Wenn jemand eine Anleitung zum Reproduzieren mit pip 20.0 bereitstellen könnte, wäre das großartig!

Ich stoße auf das gleiche Problem:

virtualenv venv
. venv/bin/activate
pip install sqlalchemy pymysql

führt zu

Traceback (most recent call last):
  File "/tmp/test/venv/bin/pip", line 11, in <module>
    sys.exit(main())
  File "/tmp/test/venv/lib/python3.8/site-packages/pip/_internal/cli/main.py", line 73, in main
    command = create_command(cmd_name, isolated=("--isolated" in cmd_args))
  File "/tmp/test/venv/lib/python3.8/site-packages/pip/_internal/commands/__init__.py", line 96, in create_command
    module = importlib.import_module(module_path)
  File "/tmp/test/venv/lib/python3.8/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
  File "<frozen importlib._bootstrap>", line 991, in _find_and_load
  File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 783, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "/tmp/test/venv/lib/python3.8/site-packages/pip/_internal/commands/install.py", line 24, in <module>
    from pip._internal.cli.req_command import RequirementCommand
  File "/tmp/test/venv/lib/python3.8/site-packages/pip/_internal/cli/req_command.py", line 20, in <module>
    from pip._internal.operations.prepare import RequirementPreparer
  File "/tmp/test/venv/lib/python3.8/site-packages/pip/_internal/operations/prepare.py", line 16, in <module>
    from pip._internal.distributions import (
  File "/tmp/test/venv/lib/python3.8/site-packages/pip/_internal/distributions/__init__.py", line 1, in <module>
    from pip._internal.distributions.source import SourceDistribution
ImportError: cannot import name 'SourceDistribution' from 'pip._internal.distributions.source' (/tmp/test/venv/lib/python3.8/site-packages/pip/_internal/distributions/source/__init__.py)

Wenn jemand Anweisungen zum Reproduzieren mit pip 20.0 bereitstellen könnte,

Kurz gesagt, "versuchen Sie, Pip zu verwenden"! Die Ergebnisse des Versuchs, scipy auf einer funktionierenden virtuellen Umgebung zu installieren, auf der scipy bereits installiert ist (dh ich erwarte, dass pip nichts tut):

(farmcat3) [danielevans@rml-dev06 farmcat]$ pip install pip==20.0
Looking in indexes: https://pypi.org/simple, http://phabricator.jbarisk.com:8080
Collecting pip==20.0
  Downloading https://files.pythonhosted.org/packages/60/65/16487a7c4e0f95bb3fc89c2e377be331fd496b7a9b08fd3077de7f3ae2cf/pip-20.0-py2.py3-none-any.whl (1.5MB)
     |████████████████████████████████| 1.5MB 1.7MB/s
Installing collected packages: pip
  Found existing installation: pip 19.3.1
    Uninstalling pip-19.3.1:
      Successfully uninstalled pip-19.3.1
pipSuccessfully installed pip-20.0

(farmcat3) [danielevans@rml-dev06 farmcat]$ pip install scipy
Traceback (most recent call last):
  File "/home/jbanorthwest.co.uk/danielevans/venvs/farmcat3/bin/pip", line 8, in <module>
    sys.exit(main())
  File "/home/jbanorthwest.co.uk/danielevans/venvs/farmcat3/lib/python3.6/site-packages/pip/_internal/cli/main.py", line 73, in main
    command = create_command(cmd_name, isolated=("--isolated" in cmd_args))
  File "/home/jbanorthwest.co.uk/danielevans/venvs/farmcat3/lib/python3.6/site-packages/pip/_internal/commands/__init__.py", line 96, in create_command
    module = importlib.import_module(module_path)
  File "/home/jbanorthwest.co.uk/danielevans/venvs/farmcat3/lib64/python3.6/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 994, in _gcd_import
  File "<frozen importlib._bootstrap>", line 971, in _find_and_load
  File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 678, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "/home/jbanorthwest.co.uk/danielevans/venvs/farmcat3/lib/python3.6/site-packages/pip/_internal/commands/install.py", line 24, in <module>
    from pip._internal.cli.req_command import RequirementCommand
  File "/home/jbanorthwest.co.uk/danielevans/venvs/farmcat3/lib/python3.6/site-packages/pip/_internal/cli/req_command.py", line 20, in <module>
    from pip._internal.operations.prepare import RequirementPreparer
  File "/home/jbanorthwest.co.uk/danielevans/venvs/farmcat3/lib/python3.6/site-packages/pip/_internal/operations/prepare.py", line 16, in <module>
    from pip._internal.distributions import (
  File "/home/jbanorthwest.co.uk/danielevans/venvs/farmcat3/lib/python3.6/site-packages/pip/_internal/distributions/__init__.py", line 1, in <module>
    from pip._internal.distributions.source import SourceDistribution
ImportError: cannot import name 'SourceDistribution'

Der curl get-pip.py Trick hat bei mir nicht funktioniert, aber ich habe die Suche nach Unterschieden zwischen meinem venv und dem "offiziellen Code", der systemtechnisch installiert ist, gelöst. (Ich bin auf einem Cluster, _so hic sunt leones_...)

--- /usr/lib/python2.7/site-packages/pip/_internal/distributions/__init__.py 2019-10-28 08:47:20.727522000 +0100
+++ /home/dummyuser/ml/lib/python3.6/site-packages/pip/_internal/distributions/__init__.py 2020-01-21 12:55:48.000000000 +0100
@@ -1,4 +1,4 @@
-von pip._internal.distributions.source.legacy import SourceDistribution
+von pip._internal.distributions.source import SourceDistribution
aus pip._internal.distributions.wheel import WheelDistribution
aus pip._internal.utils.typing import MYPY_CHECK_RUNNING

Der Umzug nach python -m pip hat mir in meiner Situation geholfen. Von https://github.com/ome/jenkins-library-recursivemerge/pull/4/files

Fehler:

    (cd build && curl -sfL ${buildInfraUrl} | tar -zxf -)
    virtualenv build/venv && build/venv/bin/pip install ${sccPackage}

Geht vorbei:

    python -m venv build/venv
    . build/venv/bin/activate
    python -m pip install ${sccPackage}

@pradyunsg , auf Fedora 29 kann ich so reproduzieren:

rm -rf ~/.local/lib/python3.7
sudo dnf install python3-pip
pip3.7 install -U --user pip
python3.7 -m pip install requests

```
Traceback (letzter Anruf zuletzt):
Datei "/usr/lib64/python3.7/runpy.py", Zeile 193, in _run_module_as_main
"__main__", mod_spec)
Datei "/usr/lib64/python3.7/runpy.py", Zeile 85, in _run_code
exec(code, run_globals)
Datei "/home/kaiant/.local/lib/python3.7/site-packages/pip/__main__.py", Zeile 19, in
sys.exit(_main())
Datei "/home/kaiant/.local/lib/python3.7/site-packages/pip/_internal/cli/main.py", Zeile 73, in main
command = create_command(cmd_name, isolated=("--isolated" in cmd_args))
Datei "/home/kaiant/.local/lib/python3.7/site-packages/pip/_internal/commands/__init__.py", Zeile 96, in create_command
module = importlib.import_module(module_path)
Datei "/usr/lib64/python3.7/importlib/__init__.py", Zeile 127, in import_module
return _bootstrap._gcd_import(name[level:], paket, level)
Datei "", Zeile 1006, in _gcd_import
Datei "", Zeile 983, in _find_and_load
Datei "", Zeile 967, in _find_and_load_unlocked
Datei "", Zeile 677, in _load_unlocked
Datei "", Zeile 728, in exec_module
Datei "", Zeile 219, in _call_with_frames_removed
Datei "/home/kaiant/.local/lib/python3.7/site-packages/pip/_internal/commands/install.py", Zeile 24, in
from pip._internal.cli.req_command import RequirementCommand
Datei "/home/kaiant/.local/lib/python3.7/site-packages/pip/_internal/cli/req_command.py", Zeile 20, in
from pip._internal.operations.prepare import RequirementPreparer
Datei "/home/kaiant/.local/lib/python3.7/site-packages/pip/_internal/operations/prepare.py", Zeile 16, in
aus pip._internal.distributions import (
Datei "/home/kaiant/.local/lib/python3.7/site-packages/pip/_internal/distributions/__init__.py", Zeile 1, in
from pip._internal.distributions.source import SourceDistribution
ImportError: Name 'SourceDistribution' kann nicht von 'pip._internal.distributions.source' importiert werden (/home/kaiant/.local/lib/python3.7/site-packages/pip/_internal/distributions/source/__init__.py)


Ich habe das gerade bekommen, als mein Deployment Pip automatisch von 19.3.1 auf 20.0 aktualisiert hat

Alles verwendet bereits Python -m pip - das ist hier nicht das Problem

Ich kann Ihnen sagen, dass der Fix von JediKev darin besteht, diesen Ordner zu löschen:

site-packages/pip/_internal/distributions/source

das Problem behoben

Ein einfacher Python-Docker-Kontext, der den python:3.7-slim Container (Debian-basiert) verwendet, ist ebenfalls betroffen:

[32;1m$ docker build --compress -t $REGISTRY_IMAGE_SPARROW .[0;m
#2 [internal] load .dockerignore
#2 transferring context: 493B done
#2 DONE 0.0s

#1 [internal] load build definition from Dockerfile
#1 transferring dockerfile: 1.22kB done
#1 DONE 0.0s

#3 [internal] load metadata for docker.io/library/python:3.7-slim
#3 DONE 0.8s

#4 [base 1/6] FROM docker.io/library/python:3.7-slim<strong i="7">@sha256</strong>:5886bc9424f2edc...
#4 DONE 0.0s

#5 [internal] load build context
#5 transferring context: 531.72kB 0.0s done
#5 DONE 0.0s

#10 [base 6/6] RUN pip install --upgrade pip
#10 CACHED

#8 [base 4/6] RUN ln -s usr/local/bin/docker-entrypoint.sh / # backwards co...
#8 CACHED

#9 [base 5/6] WORKDIR /app
#9 CACHED

#6 [base 2/6] COPY docker-entrypoint.sh /usr/local/bin/
#6 CACHED

#7 [base 3/6] RUN chmod +x /usr/local/bin/docker-entrypoint.sh
#7 CACHED

#11 [requirements 1/2] COPY requirements.txt requirements.txt
#11 CACHED

#12 [requirements 2/2] RUN pip install --no-cache-dir -r requirements.txt
#12 0.912 Traceback (most recent call last):
#12 0.912   File "/usr/local/bin/pip", line 8, in <module>
#12 0.912     sys.exit(main())
#12 0.912   File "/usr/local/lib/python3.7/site-packages/pip/_internal/cli/main.py", line 73, in main
#12 0.912     command = create_command(cmd_name, isolated=("--isolated" in cmd_args))
#12 0.912   File "/usr/local/lib/python3.7/site-packages/pip/_internal/commands/__init__.py", line 96, in create_command
#12 0.912     module = importlib.import_module(module_path)
#12 0.912   File "/usr/local/lib/python3.7/importlib/__init__.py", line 127, in import_module
#12 0.912     return _bootstrap._gcd_import(name[level:], package, level)
#12 0.912   File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
#12 0.912   File "<frozen importlib._bootstrap>", line 983, in _find_and_load
#12 0.912   File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
#12 0.912   File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
#12 0.913   File "<frozen importlib._bootstrap_external>", line 728, in exec_module
#12 0.913   File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
#12 0.913   File "/usr/local/lib/python3.7/site-packages/pip/_internal/commands/install.py", line 24, in <module>
#12 0.913     from pip._internal.cli.req_command import RequirementCommand
#12 0.913   File "/usr/local/lib/python3.7/site-packages/pip/_internal/cli/req_command.py", line 20, in <module>
#12 0.913     from pip._internal.operations.prepare import RequirementPreparer
#12 0.913   File "/usr/local/lib/python3.7/site-packages/pip/_internal/operations/prepare.py", line 16, in <module>
#12 0.913     from pip._internal.distributions import (
#12 0.913   File "/usr/local/lib/python3.7/site-packages/pip/_internal/distributions/__init__.py", line 1, in <module>
#12 0.913     from pip._internal.distributions.source import SourceDistribution
#12 0.913 ImportError: cannot import name 'SourceDistribution' from 'pip._internal.distributions.source' (/usr/local/lib/python3.7/site-packages/pip/_internal/distributions/source/__init__.py)
#12 ERROR: executor failed running [/bin/sh -c pip install --no-cache-dir -r requirements.txt]: runc did not terminate sucessfully
------
 > [requirements 2/2] RUN pip install --no-cache-dir -r requirements.txt:
------
failed to solve with frontend dockerfile.v0: failed to build LLB: executor failed running [/bin/sh -c pip install --no-cache-dir -r requirements.txt]: runc did not terminate sucessfully

Habe das gleiche in python:3.7.6-alpine das auf Github-Aktionen ausgeführt wird

Ich kann diesen Fehler in einem Dockerfile reproduzieren:

FROM python:3.7

COPY requirements.txt .

RUN pip install --upgrade pip
RUN pip install -r requirements.txt

CMD pip --version

Und in requirements.txst :


Wenn ich dieses Image erstelle, erhalte ich diesen bösen Fehler. Wenn ich die Zeile entferne, die pip aktualisiert, wird das Image erstellt.

Okay, ich habe dies lokal reproduziert - ich werde bald eine PR mit einem Fix einreichen.

Das Entfernen des Ordners ./site-packages/pip/_internal/distributions/source hilft!

Ja, Pip-Version 20.0 bricht zusammen

Ja, ich habe das gleiche Problem hier (Pip 20.0).

Ja, pip 20.0 bricht mit "virtualenv" ab. Befehl zum Erstellen von Venv

Auch hier schlagen alle unsere CI-Builds, die pip aktualisieren, fehl.

Alle Builds sind aufgrund des gleichen Fehlers auch auf unserer Seite defekt.

Builds pleite

Was passiert, wenn ich auf Pip 19.x zurückkehre? Würde es funktionieren?

BEARBEITEN:
pip install --upgrade "pip==19.3.1" funktioniert noch.

Das gleiche hier mit Python 3.7.3 und Pip 20.0

pip install pip"<20.0" temporäre Lösung, aber es funktioniert.

ist es vielleicht möglich, ein virtualenv erstellen, das pip Version auf 19.3.1 (die vorherige)

Eine schnelle Lösung, die funktioniert, ist

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.pypython get-pip.py pip==9.0.2

Unsere CI-Pipeline gespeichert

Read The Docs wird jetzt auch von diesem Problem geplagt, wodurch das Erstellen von Dokumenten immer wieder fehlschlägt
373AED13-5DF1-4729-9923-114F83603B44

ist es vielleicht möglich, eine virtualenv zu erstellen, die pip-version auf 19.3.1 (die vorherige)

@manutero , das --no-download Flag des virtualenv Befehls verhindert, dass zum Zeitpunkt der Erstellung der Umgebung versucht wird, die neueste Version von pip herunterzuladen.

Wenn Sie virtualenv verwenden, führen Sie ein Downgrade auf 19.x durch. Dies hat das Problem in meinem virtualenv behoben:

virtualenv --no-pip <ENV NAME>
# activate the virtual environment
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py pip==19.2.2

Musste die vorherige Version zum Sortieren auswählen,
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py pip=19.3.1

Das gleiche hier mit Python 3.7.6 und Pip 20.0

pip-Version-20.0
Python-Version - 3.6
Schreiben Sie einfach die folgenden Zeilen in die Datei
/lib/python3.6/site-packages/pip/_internal/distributions/source/__init__.py

aus .Legacy-Import SourceDistribution

Können andere, die diesen Fehler sehen, bestätigen, dass in pip/_internal/distributions eine Quelle/ein Ordner vorhanden ist?

Wenn Sie bestätigen können, dass der Ordner existiert, geben Sie hier keinen Kommentar ab – verwenden Sie die 👍-Reaktion in diesem Beitrag. Dieser Ordner existiert nicht, verwenden Sie die 👎-Reaktion.

gleiches Problem hier mit Ubuntu 19.04

Successfully installed pip-20.0
Traceback (most recent call last):
  File "/home/pippo/.venvs/test_pgm/bin/pip", line 10, in <module>
    sys.exit(main())
  File "/home/pippo/.venvs/test_pgm/lib/python3.7/site-packages/pip/_internal/cli/main.py", line 73, in main
    command = create_command(cmd_name, isolated=("--isolated" in cmd_args))
  File "/home/pippo/.venvs/test_pgm/lib/python3.7/site-packages/pip/_internal/commands/__init__.py", line 96, in create_command
    module = importlib.import_module(module_path)
  File "/usr/lib/python3.7/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
  File "<frozen importlib._bootstrap>", line 983, in _find_and_load
  File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 728, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "/home/pippo/.venvs/test_pgm/lib/python3.7/site-packages/pip/_internal/commands/install.py", line 24, in <module>
    from pip._internal.cli.req_command import RequirementCommand
  File "/home/pippo/.venvs/test_pgm/lib/python3.7/site-packages/pip/_internal/cli/req_command.py", line 20, in <module>
    from pip._internal.operations.prepare import RequirementPreparer
  File "/home/pippo/.venvs/test_pgm/lib/python3.7/site-packages/pip/_internal/operations/prepare.py", line 16, in <module>
    from pip._internal.distributions import (
  File "/home/pippo/.venvs/test_pgm/lib/python3.7/site-packages/pip/_internal/distributions/__init__.py", line 1, in <module>
    from pip._internal.distributions.source import SourceDistribution
ImportError: cannot import name 'SourceDistribution' from 'pip._internal.distributions.source' (/home/pippo/.venvs/test_pgm/lib/python3.7/site-packages/pip/_internal/distributions/source/__init__.py)

Es erscheint nicht mit pip==19.2.3, also habe ich es vorerst zurückgesetzt

Bitte hör auf, "mich auch" zu melden. @pradyunsg arbeitet gerade an einem Fix

Ja. Das zu schlagen hat gestern funktioniert.

Schnipsel für Pipenv-Benutzer

wget https://bootstrap.pypa.io/get-pip.py -O get-pip.py
pipenv run python get-pip.py pip==19.3

Für eine schnelle Lösung,

$(which easy_install) pip==19.3

funktioniert auch ok

Für eine schnelle Lösung,

$(which easy_install) pip==19.3

funktioniert auch ok

Zwischen all den temporären Workarounds hat bei mir nur dieser funktioniert

Ich frage mich, was passieren wird, wenn sie easy_install entfernen... :) - Wie werden wir dann Pip-Probleme beheben?

Das Ersetzen von pip install --upgrade pip durch pip install --upgrade pip"<20.0" funktioniert hier.

Musste die vorherige Version zum Sortieren auswählen,
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py pip=19.3.1

Es sollte python3 sein get-pip.py pip==19.3.1

Das Ersetzen von pip install --upgrade pip durch pip install --upgrade pip"<20.0" funktioniert hier.

Hilf mir im Docker
RUN pip install --upgrade pip"<20.0"

Danke @PabloCastellano! Ich ignoriere jetzt nur Kommentare hier, da ich nicht möchte, dass meine Herzfrequenz höher wird. :)

Habe das Bugfix-Release gemacht. Wenn das geholfen hat, verwende 👍 in diesem Beitrag. Ansonsten schreiben Sie bitte einen Kommentar mit der Fehlermeldung.

XD

Ich möchte nicht, dass meine Herzfrequenz höher wird. :)
Habe das Bugfix-Release gemacht.

@pradyunsg Du hast meine gerade gesenkt. Scheint zu funktionieren.

@SergeyLadutko :

Das Ersetzen von pip install --upgrade pip durch pip install --upgrade pip"<20.0" funktioniert hier.

Hilf mir im Docker
RUN pip install --upgrade pip"<20.0"

versuche es mit pip install --upgrade pip==19.3.1

Okay, lass mich meinen Build noch einmal ausführen

@pradyunsg Hut ab für die schnelle Lösung, wir wissen es wirklich zu schätzen <3 Ich kann bestätigen, dass sich diese Lösung in CircleCI-Jobs durchgesetzt hat, für alle, die sich fragen.

Beachten Sie, dass get-pip.py noch nicht aktualisiert wurde - das liegt daran, dass ich beim Testen meine eigene Entwicklungsumgebung für get-pip gebohrt habe. :)

Ich werde das in den nächsten Minuten aktualisieren.

Kann bestätigen. pip==20.0.1 funktioniert einwandfrei

@pradyunsg irgendwelche CI-Verbesserungen, damit dies in Zukunft nicht mehr passiert? Ein Docker-Container wäre ausreichend. Würden Sie dafür PRs akzeptieren?

Beachten Sie, dass get-pip.py noch nicht aktualisiert wurde - das liegt daran, dass ich beim Testen meine eigene Entwicklungsumgebung für get-pip gebohrt habe. :)

Ich werde das in den nächsten Minuten aktualisieren.

:) lass es uns wissen, wann das gut ist

Ich werde das in den nächsten Minuten aktualisieren.

Okay, habe das jetzt geschoben. Die Änderung sollte sich inzwischen auf bootstrap.pypa.io übertragen haben. Oder es wird wirklich bald.

Unser Build ist jetzt mit get-pip.py bestanden, danke @pradyunsg

pip 20.0.1 funktioniert einwandfrei. Danke @pradyunsg

Ich kann bestätigen, dass jetzt das neue pip installiert wird, das nicht mehr unter diesem Fehler leidet. Danke @pradyunsg !

Danke @pradyunsg !!

danke @pradyunsg ! so so viel

danke @pradyunsg für die schnelle Lösung! 🎉.

Danke @pradyunsg für die schnelle

Ich denke, das Problem wurde verursacht, weil es ein source Modulverzeichnis sowie source.py im pip/_internal/distributions Pfad gibt und das bringt die Importe durcheinander

In pip/_internal/distributions/__init__.py haben Sie eine Importzeile:

from pip._internal.distributions.source import SourceDistribution # <-- here
from pip._internal.distributions.wheel import WheelDistribution
from pip._internal.utils.typing import MYPY_CHECK_RUNNING

Aber es gibt auch ein source Verzeichnis mit __init__.py darin,

  env  ~/.../_internal/distributions  ls -ltr
total 32
-rw-r--r-- 1 user xxx 1294 Jan 21 18:02 wheel.py
-rw-r--r-- 1 user xxx  760 Jan 21 18:02 installed.py
-rw-r--r-- 1 user xxx 1425 Jan 21 18:02 base.py
drwxr-xr-x 3 user xxx 4096 Jan 21 18:02 source
-rw-r--r-- 1 user xxx 4201 Jan 21 18:19 source.py
-rw-r--r-- 1 user xxx  961 Jan 21 18:26 __init__.py
drwxr-xr-x 2 user xxx 4096 Jan 21 18:26 __pycache__

Daher wird dieser Import fehlschlagen. Das Umbenennen von source.py in _source.py und das Ändern des Imports in __init__.py in from pip._internal.distributions._source import SourceDistribution scheint das Problem zu beheben

@pradyunsg Hut ab für die schnelle Lösung, wir wissen es sehr zu schätzen <3

Einverstanden, fantastische Wende bei der Fehlerbehebung hier!

Danke @pradyunsg

Gleicher Fehler wie oben.
Python-Version: Python-3.7.6
Betriebssystem: Windows

Funktioniert nach dem Wechsel zu PIP 19.3.1

Funktioniert jetzt super, danke.

Können Sie in Anbetracht der Art dieses Fehlers bitte die Version 20.0 von PYPA entfernen? https://pypi.org/project/pip/#history

Eine andere Frage wäre, was wir tun könnten, um eine ähnliche Regression in Zukunft zu vermeiden.

Entschuldigung für den Bruch und vielen Dank, dass Sie hier mit uns zusammengearbeitet haben, um diesen Bruch zu beheben!

@xavfernandez hat herausgefunden, warum dies passiert ist und wir werden unseren Veröffentlichungsprozess ändern, um ähnliche Fehler in Zukunft zu vermeiden: #7624

Super Arbeit, danke für die blitzschnelle Abwicklung!

Hallo, ich stecke in 20.0 . fest
Alle Befehle, die ich ausprobiert habe, geben diesen Fehler über 'SourceDistribution' zurück.

pip install --upgrade pip
pip install pip "<20.0"
pip install --upgrade "pip==19.3.1"

Ich habe es auch satt zu deinstallieren:

pip uninstall pip
python -m pip uninstall pip setuptools

Hat jemand eine andere Lösung, um Pip zu deinstallieren?

Ubuntu 18.04.3 LTS
Python 3.6.9
in virtuellen Umgebungen ausführen

Hallo @CharrierCoop! Sie sollten in der Lage sein, get-pip.py herunterzuladen und pip 20.0.1 damit zu installieren.

Siehe https://pip.pypa.io/en/stable/installing/

Perfekt !!
danke @pradyunsg

Können Sie bitte die Version 20.0 von PYPA entfernen?

Nein. Wir werden es nicht löschen. Wir haben eine standardmäßig unterstützte Funktion zum "Zerreißen" defekter Veröffentlichungen. Sobald PyPI dies unterstützt, werden wir diese Version entfernen (falls es bis dahin jemanden interessiert).

Weitere Informationen finden Sie unter https://www.python.org/dev/peps/pep-0592/#motivation .

sudo python get-pip.py pip==19.3.1"
dieses Problem beheben

sudo python get-pip.py pip==19.3.1"
dieses Problem beheben

Danke sehr

sudo python get-pip.py pip==19.3.1"
dieses Problem beheben

Keine Notwendigkeit, dieses Problem wurde von @pradyunsg behoben

Hallo @CharrierCoop! Sie sollten in der Lage sein, get-pip.py herunterzuladen und pip 20.0.1 damit zu installieren.

Siehe https://pip.pypa.io/en/stable/installing/

Ich habe versucht, dasselbe auf Raspberry Pi 4 (Python 3.7.3, pip-Version - 20.0 und OS - Raspbian Buster Lite) zu tun, aber es war nicht erfolgreich.
FEHLER: Es konnte keine Version gefunden werden, die die Anforderung pi p . erfüllt
FEHLER: Keine passende Distribution für pip . gefunden

Irgendeine Lösung?

@Gilf641 Bitte

Ich werde dieses Problem jetzt schließen, da es anscheinend für die meisten Benutzer funktioniert.

Wenn Sie immer noch Probleme haben, suchen Sie bitte nach Duplikaten, die früher eingereicht wurden (seit dem 21. Januar, für pip 20.0) und wenn keine vorhanden sind, reichen Sie ein neues Problem ein.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen