Pip: ImportError : impossible d'importer le nom 'SourceDistribution' depuis 'pip._internal.distributions.source'

Créé le 15 oct. 2019  ·  101Commentaires  ·  Source: pypa/pip

Environnement

CircleCI utilisant Conda, par exemple https://circleci.com/gh/peterjc/thapbi-pict/1073

  • version pip : pip-19.2.3 (depuis conda) mise à jour vers 19.3 (via pip install --upgrade pip setuptools )
  • Version Python : python-3.7.3
  • Système d'exploitation : Linux

Je n'ai apporté que des modifications mineures à mon code, mais aujourd'hui, les versions de CircleCI se sont cassées pendant la phase de construction/installation de mon outil Python - plusieurs branches affectées. Le timing correspond à la sortie du pip 19.3 sur PyPI.

La description

Il semble qu'une version récente de pip ait déplacé certains fichiers internes, je suppose que c'est #6830.

Comportement attendu

Comment reproduire

Sortie complète sur https://circleci.com/gh/peterjc/thapbi-pict/1073 qui s'exécute 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

Sortir

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

Commentaire le plus utile

Merci @PabloCastellano ! J'ignore simplement les commentaires ici maintenant, car je ne veux pas que mon rythme cardiaque augmente. :)

Fait la version de correction de bugs. Si cela vous a aidé, utilisez 👍 sur ce post. Sinon, veuillez écrire un commentaire avec le message d'erreur.

Tous les 101 commentaires

Il serait vraiment utile de savoir ce qui dans la configuration de CircleCI (ou conda ?) utilise ces API internes - la réorganisation n'aurait dû affecter aucun code externe. Le principal problème que nous connaissons jusqu'à présent est la réorganisation de main, qui a un impact sur les scripts wrapper, mais celui-ci semble un peu différent. Toute idée que vous pouvez donner serait très utile, merci.

Confirmé que la suppression de pip install --upgrade pip setuptools corrigé les choses,

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

c'est-à-dire que quelque chose s'est cassé dans la façon dont j'ai mis à jour le pip 19.2.3 à 19.3

Je n'utilise pas intentionnellement le Python fourni par CircleCI, mais plutôt le Python fourni par Conda - est-il utile de passer de pip ... à python -m pip ... juste pour éliminer la possibilité que cela soit dû au mélange de Pythons ?

Travailler sur une branche maintenant, ajouter un peu plus de journalisation et revenir à la version cassée :

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

Cela confirme que le retraçage est déclenché par pip install dist/thapbi_pict-*.whl (caractère générique pour correspondre à la seule roue fraîchement construite).

Pour ce que ça vaut, je viens de confirmer que from pip._internal import main fonctionne sur une simple mise à jour de pip (sous Windows, donc pas vraiment une bonne comparaison, mais quand même...). Je soupçonne donc qu'il y a quelque chose qui ne correspond pas dans votre environnement, bien que je ne puisse pas voir à partir du retraçage de quoi il s'agit.

CircleCI a la capacité de réexécuter une tâche avec un accès SSH à la machine virtuelle (je ne l'ai jamais utilisé), donc en théorie, cela pourrait être utilisé pour le débogage, mais je ne sais pas vraiment par où commencer.

J'ai une solution pour le moment, et à un moment donné, conda-forge aura également le pip 19.3 emballé, donc à moins que d'autres personnes ne voient la même exception, cela semble une faible priorité?

OK cool. Si vous avez une solution de contournement, je vais bien la laisser là pour le moment. Si d'autres ajoutent des commentaires signalant que cela se passe ailleurs, nous pouvons alors creuser davantage - peut-être qu'ils auront des informations supplémentaires qui nous aideront.

Je suis confronté à un problème similaire sur macOS, python : 3.6.9. La commande pip sur mon terminal ne fonctionne plus. Aucune suggestion?

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

Cela a aidé pour l'instant

J'ai le même problème sur CircleCI depuis 1 heures.
Le changement de version de l'image docker de python:3.7 à python:3.7.4 résout ce problème. (juste une solution de contournement). comme ça:

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

Certains d'entre vous utilisent-ils la mise en cache ? Je pense qu'il est possible que certains éléments internes de pip aient changé et que lorsque vous restaurez le cache de l'ancienne version de python, des pauses de pip. Suggérez-vous d'invalider vos caches Circle CI en changeant le keys et voyez ce qui se passe ... (a fonctionné pour moi!)

Comme suggéré par @bgkelly, la suppression du cache a également fonctionné pour moi !

Oui - même chose pour moi - changer la clé de cache a résolu ce problème pour les projets de notre équipe sur circleci. Merci @bgkelly

Changer la clé de cache ne l'a pas résolu pour moi.
L'ajout d'un commentaire dans requirements.txt fait, mais ce n'est pas une solution souhaitée.

D'accord, cela semble donc être un problème de mise en cache pour CircleCI.

Quelqu'un pourrait-il contacter les gens de CircleCI (via leurs canaux d'assistance) ? Ce serait formidable s'ils pouvaient examiner cela et éventuellement sonner ici.

Hey les gens,

Je ne sais vraiment pas si cela vous aide de quelque manière que ce soit, mais j'ai eu le même message d'erreur sur ma configuration MSYS en essayant d'installer WeasyPrint.

Après avoir désinstallé python3-pip et python3-setuptools, j'ai supprimé tous les dossiers pip dans /usr/lib/python3.7/site-packages/ et réinstallé les deux... j'ai résolu cette erreur spécifique.

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

Pour être juste, j'ai maintenant rencontré des problèmes de compilateur... mais peut-être que je pourrais aider...

Juste au cas où cela pourrait aider, j'ai rencontré l'erreur dans un contexte différent : lors de la copie d'un environnement virtuel d'une image Docker à une autre, dans une configuration en plusieurs étapes.

L'image source contient une version moins récente de pip alors que l'image cible contient une version mise à jour de pip . Après avoir copié le répertoire d'environnement virtuel de l'image source dans l'image cible, il y a 2 répertoires différents ( pip-<version>.dist-info ) sous l'environnement virtuel site-packages et pip ne fonctionne pas, donnant la même erreur que celle signalée dans ce numéro.

Je n'ai pas passé de temps à résoudre le problème car je suis quelque peu sceptique quant à cette approche consistant à copier l'environnement virtuel dans un environnement où des packages sont déjà installés.

Dans tous les cas, cela semble être un problème de collision de paquets.

J'espère que cela t'aides! :le sourire:

salut
Je crois que nous voyons le même problème sur notre serveur interne ReadTheDocs. Il exécute la commande suivante lors de la création d'un document :

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

Si j'efface le cache de construction via l'interface GUI ReadTheDocs, la construction est réussie - mais seulement jusqu'au prochain démarrage d'une construction.

Voici le journal complet :

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'

Salut,

J'ai rencontré le problème aussi.

Système d'exploitation : Debian GNU/Linux 10 (Linux 4.19.0-6-amd64)
pépin : 19.3.1
conda: 4.7.12
Python : 3.7.4

$ pip
Traceback (appel le plus récent en dernier) :
Fichier "/home/jiang/anaconda3/bin/pip", ligne 7, dans
de pip._internal import main
Fichier "/home/jiang/anaconda3/lib/python3.7/site-packages/pip/_internal/__init__.py", ligne 40, dans
à partir de pip._internal.cli.autocompletion importer la saisie semi-automatique
Fichier "/home/jiang/anaconda3/lib/python3.7/site-packages/pip/_internal/cli/autocompletion.py", ligne 8, dans
depuis pip._internal.cli.main_parser importer create_main_parser
Fichier "/home/jiang/anaconda3/lib/python3.7/site-packages/pip/_internal/cli/main_parser.py", ligne 11, dans
à partir de l'importation pip._internal.commands (
Fichier "/home/jiang/anaconda3/lib/python3.7/site-packages/pip/_internal/commands/__init__.py", ligne 9, dans
à partir de pip._internal.commands.download importer DownloadCommand
Fichier "/home/jiang/anaconda3/lib/python3.7/site-packages/pip/_internal/commands/download.py", ligne 10, dans
à partir de pip._internal.operations.prepare import RequirementPreparer
Fichier "/home/jiang/anaconda3/lib/python3.7/site-packages/pip/_internal/operations/prepare.py", ligne 9, dans
à partir de l'import pip._internal.distributions (
Fichier "/home/jiang/anaconda3/lib/python3.7/site-packages/pip/_internal/distributions/__init__.py", ligne 1, dans
de pip._internal.distributions.source importer SourceDistribution
ImportError : impossible d'importer le nom 'SourceDistribution' depuis 'pip._internal.distributions.source' (/home/jiang/anaconda3/lib/python3.7/site-packages/pip/_internal/distributions/source/__init__.py)

Nous avons pu contourner le problème sur notre serveur ReadTheDocs local en modifiant le flux de génération pour utiliser spécifiquement la version 19.2.3 de pip. ReadTheDocs exécute maintenant la commande de génération suivante - et nous n'avons plus de problème de mise en cache :

/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

Plus précisément, nous avons mis à jour le fichier local python_environment.py pour utiliser une version de pip spécifique : https://github.com/readthedocs/readthedocs.org/blob/7212d6ff738b24a10fb0f4227d3fbdf69e5cab42/readthedocs/doc_builder/python_environments.py#L322

cmd = pip_install_cmd + ['pip']

changé en:

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

Je sais que ma configuration peut être différente de la plupart, mais le problème de mon côté était dû au répertoire PIP sources/ dans l'environnement virtuel (probablement des problèmes de mise en cache PIP ou quelque chose du genre). Laisse-moi expliquer:
Lors de la suppression du répertoire user_builds/project/envs/ d'un projet et de sa reconstruction, cela fonctionne mais seulement jusqu'à ce que vous alliez reconstruire avec le répertoire envs/ présent à nouveau. J'ai passé une tonne de temps à déboguer le problème et il s'est avéré que c'était le répertoire user_builds/project/envs/ (ou quelque chose à l'intérieur) causant des problèmes. J'ai donc fait plus de tests pour comprendre qu'il s'agissait du répertoire user_builds/project/envs/latest/lib/python3.6/site-packages/pip/_internal/distributions/source/ causant spécifiquement des problèmes. J'ai supprimé le répertoire user_builds/project/envs/latest/lib/python3.6/site-packages/pip/_internal/distributions/source/ , reconstruit, et tout allait bien. J'ai reconstruit à nouveau et cela a échoué. J'ai vérifié à nouveau le répertoire user_builds/project/envs/latest/lib/python3.6/site-packages/pip/_internal/distributions/ et j'ai vu que source/ était présent. Je suis donc allé à mon installation globale de Python et j'ai déplacé le répertoire /path/to/lib/python3.6/dist-packages/pip/_internal/distributions/source/ de PIP, supprimé le répertoire user_builds/project/envs/latest/lib/python3.6/site-packages/pip/_internal/distributions/source/ de l'environnement du projet et reconstruit. Cela a été construit avec succès et n'a pas copié le dossier source/ , parfait. Alors maintenant, à chaque fois que les documents sont construits, ils se construisent sans erreurs. J'espère que ça aidera quelqu'un d'autre.

Acclamations.

Essaye ça:

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

@Guru36

J'ai essayé ça plusieurs fois sans succès. De toute façon, vous devez le faire au début, donc cela n'aidera pas. Merci quand même.

Acclamations.

Essaye ça:

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

Merci

J'ai maintenant des problèmes avec cela sur la version 0.20.

Regardant cela maintenant les gens. Si quelqu'un pouvait fournir des instructions sur la façon de reproduire avec pip 20.0, ce serait génial !

Je rencontre le même problème :

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

résultats dans

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)

Si quelqu'un pouvait fournir des instructions sur la façon de reproduire avec pip 20.0,

En bref, "essayez d'utiliser pip" ! Les résultats de la tentative d'installation de scipy sur un environnement virtuel fonctionnel, sur lequel scipy est déjà installé (c'est-à-dire que je m'attends à ce que pip ne fasse rien):

(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'

L'astuce curl get-pip.py n'a pas fonctionné pour moi, mais j'ai résolu de rechercher les différences entre mon venv et le "code officiel" installé au niveau du système. (je suis sur un 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 @@
-de pip._internal.distributions.source.legacy importer SourceDistribution
+de pip._internal.distributions.source import SourceDistribution
de pip._internal.distributions.wheel import WheelDistribution
de pip._internal.utils.typing importer MYPY_CHECK_RUNNING

Le passage à python -m pip m'a aidé dans ma situation. De https://github.com/ome/jenkins-library-recursivemerge/pull/4/files

Échoue:

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

Laissez-passer :

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

@pradyunsg , sur Fedora 29 je peux reproduire comme ceci :

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

```
Traceback (appel le plus récent en dernier) :
Fichier "/usr/lib64/python3.7/runpy.py", ligne 193, dans _run_module_as_main
"__main__", mod_spec)
Fichier "/usr/lib64/python3.7/runpy.py", ligne 85, dans _run_code
exec(code, run_globals)
Fichier "/home/kaiant/.local/lib/python3.7/site-packages/pip/__main__.py", ligne 19, dans
sys.exit(_main())
Fichier "/home/kaiant/.local/lib/python3.7/site-packages/pip/_internal/cli/main.py", ligne 73, dans main
command = create_command(cmd_name, isolated=("--isolated" dans cmd_args))
Fichier "/home/kaiant/.local/lib/python3.7/site-packages/pip/_internal/commands/__init__.py", ligne 96, dans create_command
module = importlib.import_module(module_path)
Fichier "/usr/lib64/python3.7/importlib/__init__.py", ligne 127, dans import_module
return _bootstrap._gcd_import(nom[niveau :], package, niveau)
Déposer "", ligne 1006, dans _gcd_import
Déposer "", ligne 983, dans _find_and_load
Déposer "", ligne 967, dans _find_and_load_unlocked
Déposer "", ligne 677, dans _load_unlocked
Déposer "", ligne 728, dans exec_module
Déposer "", ligne 219, dans _call_with_frames_removed
Fichier "/home/kaiant/.local/lib/python3.7/site-packages/pip/_internal/commands/install.py", ligne 24, dans
à partir de pip._internal.cli.req_command import RequirementCommand
Fichier "/home/kaiant/.local/lib/python3.7/site-packages/pip/_internal/cli/req_command.py", ligne 20, dans
à partir de pip._internal.operations.prepare import RequirementPreparer
Fichier "/home/kaiant/.local/lib/python3.7/site-packages/pip/_internal/operations/prepare.py", ligne 16, dans
à partir de l'import pip._internal.distributions (
Fichier "/home/kaiant/.local/lib/python3.7/site-packages/pip/_internal/distributions/__init__.py", ligne 1, dans
de pip._internal.distributions.source importer SourceDistribution
ImportError : impossible d'importer le nom 'SourceDistribution' depuis 'pip._internal.distributions.source' (/home/kaiant/.local/lib/python3.7/site-packages/pip/_internal/distributions/source/__init__.py)


Je viens de recevoir ceci lorsque mon déploiement a mis à jour automatiquement le pip de 19.3.1 à 20.0

Tout utilise déjà python -m pip - ce n'est pas le problème ici

Je peux vous dire que le correctif de JediKev, c'est-à-dire supprimer ce dossier :

site-packages/pip/_internal/distributions/source

résolu le problème

Un simple contexte Python Docker utilisant le conteneur python:3.7-slim (basé sur Debian) est également affecté :

[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

Vous avez la même chose dans python:3.7.6-alpine cours d'exécution sur les actions github

Je peux reproduire cette erreur dans un Dockerfile :

FROM python:3.7

COPY requirements.txt .

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

CMD pip --version

Et en requirements.txst :


Lorsque je construis cette image, j'obtiens cette erreur désagréable. Si je supprime la ligne qui met à niveau le pip, l'image se construit.

D'accord, j'ai reproduit cela localement - je vais bientôt déposer un PR avec un correctif.

La suppression du dossier ./site-packages/pip/_internal/distributions/source aide !

Ouais, la version 20.0 de pip est cassée

Oui, j'ai le même problème ici (pip 20.0).

Oui, le pip 20.0 casse , en utilisant "virtualenv ." commande pour créer venv

Idem ici, toutes nos versions de CI qui mettent à jour le pip échouent.

Toutes les versions sont cassées en raison de la même erreur de notre côté également.

Les constructions se sont cassées

Et si je reviens au pip 19.x ? Cela fonctionnerait-il ?

ÉDITER:
pip install --upgrade "pip==19.3.1" fonctionne toujours.

Idem ici avec python 3.7.3 et pip 20.0

pip install pip"<20.0" solution temporaire mais ça marche.

peut-être est-il possible de créer une virtualenv mettant pip versio à 19.3.1 (le préc.)

Une solution rapide qui fonctionne est

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

Sauvé notre pipeline CI

Read The Docs est également en proie à ce problème maintenant, ce qui fait que la création de documents échoue systématiquement
373AED13-5DF1-4729-9923-114F83603B44

peut-être est-il possible de créer un paramètre virtualenv pip versio à 19.3.1 (le préc.)

@manutero , le drapeau --no-download de la commande virtualenv évitera d'essayer de télécharger la dernière version de pip au moment de la création de l'environnement.

Si vous utilisez virtualenv, passez simplement à 19.x. Cela a résolu le problème dans mon virtualenv :

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

J'ai dû sélectionner la version précédente pour trier,
boucle https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py pip=19.3.1

Idem ici avec python 3.7.6 et pip 20.0

pip version-20.0
version python - 3.6
Écrivez simplement les lignes ci-dessous dans le fichier
/lib/python3.6/site-packages/pip/_internal/distributions/source/__init__.py

à partir de .legacy importer SourceDistribution

Est-ce que d'autres personnes voyant cet échec peuvent confirmer qu'il y a une source/dossier dans pip/_internal/distributions ?

Si vous pouvez confirmer que ce dossier existe, ne faites pas de commentaire ici -- utilisez la réaction 👍 sur ce post. Ce dossier n'existe pas, utilisez la réaction .

même problème ici avec 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)

Il n'apparaît pas avec pip==19.2.3 donc pour l'instant je l'ai inversé

S'il vous plaît arrêtez de signaler "moi aussi". @pradyunsg travaille actuellement sur un correctif

Ouais. frapper cela a maintenant fonctionné hier.

extrait pour les utilisateurs de pipenv

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

Pour une solution rapide,

$(which easy_install) pip==19.3

fonctionne aussi bien

Pour une solution rapide,

$(which easy_install) pip==19.3

fonctionne aussi bien

Entre toutes les solutions de contournement temporaires, seule celle-ci a fonctionné pour moi

Je me demande ce qui se passera quand ils supprimeront easy_install... :) - Comment allons-nous résoudre les problèmes de pip alors?

Remplacez pip install --upgrade pip par pip install --upgrade pip"<20.0" travaillant ici.

J'ai dû sélectionner la version précédente pour trier,
boucle https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py pip=19.3.1

Il devrait s'agir de python3 get-pip.py pip==19.3.1

Remplacez pip install --upgrade pip par pip install --upgrade pip"<20.0" travaillant ici.

Aidez-moi dans docker
RUN pip install --upgrade pip"<20.0"

Merci @PabloCastellano ! J'ignore simplement les commentaires ici maintenant, car je ne veux pas que mon rythme cardiaque augmente. :)

Fait la version de correction de bugs. Si cela vous a aidé, utilisez 👍 sur ce post. Sinon, veuillez écrire un commentaire avec le message d'erreur.

XD

Je ne veux pas que mon rythme cardiaque s'accélère. :)
Fait la version de correction de bugs.

@pradyunsg Vous venez de baisser le mien. Semble fonctionner.

@SergeyLadutko :

Remplacez pip install --upgrade pip par pip install --upgrade pip"<20.0" travaillant ici.

Aidez-moi dans docker
RUN pip install --upgrade pip"<20.0"

essayez pip install --upgrade pip==19.3.1

ok laisse moi relancer mon build

@pradyunsg Chapeau pour le correctif rapide, nous l'apprécions vraiment <3 Je peux confirmer que ce correctif a pris racine dans les emplois CircleCI, pour tous ceux qui se demandent.

Notez que get-pip.py n'a pas encore été mis à jour -- c'est parce que, eh bien, j'ai raté mon propre environnement de développement pour get-pip lors du test. :)

Je mettrai à jour cela dans les prochaines minutes.

Peut confirmer. pip==20.0.1 fonctionne bien

@pradyunsg des améliorations de CI pour que cela ne se reproduise pas à l'avenir ? Un conteneur docker suffirait. Accepteriez-vous les PR pour cela ?

Notez que get-pip.py n'a pas encore été mis à jour -- c'est parce que, eh bien, j'ai raté mon propre environnement de développement pour get-pip lors du test. :)

Je mettrai à jour cela dans les prochaines minutes.

:) faites-nous savoir quand ce sera bon d'aller

Je mettrai à jour cela dans les prochaines minutes.

D'accord, j'ai poussé ça maintenant. Le changement devrait s'être propagé à bootstrap.pypa.io maintenant. Ou ce sera très bientôt.

Notre build est maintenant passé avec get-pip.py merci @pradyunsg

pip 20.0.1 fonctionne correctement. Merci @pradyunsg

Je peux confirmer que le nouveau pip est installé maintenant et ne souffre plus de cette erreur. Merci @pradyunsg !

Merci @pradyunsg !!

merci @pradyunsg ! tellement

merci @pradyunsg pour la solution rapide ! ??

Merci @pradyunsg pour la rapidité d'exécution !

Je pense que le problème a été créé car il y a un répertoire de module source ainsi que source.py dans le chemin pip/_internal/distributions et cela perturbe les importations

Dans pip/_internal/distributions/__init__.py avoir une ligne d'importation :

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

Mais il y a aussi un source avec __init__.py intérieur,

  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__

Par conséquent, cette importation échouera. Renommer le source.py en _source.py et changer l'importation en __init__.py en from pip._internal.distributions._source import SourceDistribution semble résoudre le problème

@pradyunsg Chapeau pour la solution rapide, nous l'apprécions vraiment <3

D'accord, retournement fantastique sur le correctif ici !

Merci @pradyunsg

Même erreur que ci-dessus.
Version Python : python-3.7.6
OS : Windows

Fonctionne après le passage à PIP 19.3.1

Fonctionne très bien maintenant, merci.

Compte tenu de la nature de ce bogue, pouvez-vous s'il vous plaît supprimer la version 20.0 de PYPA ? https://pypi.org/project/pip/#history

Une autre question serait ce que nous pourrions faire pour éviter une régression similaire à l'avenir.

Désolé tout le monde pour la casse, et merci de travailler avec nous ici pour réparer cette casse !

@xavfernandez a compris pourquoi cela s'est produit et nous apporterons des modifications à notre processus de publication pour éviter des échecs similaires à l'avenir : #7624

excellent travail, merci pour le délai d'exécution rapide comme l'éclair !

Bonjour, je suis bloqué dans 20.0
Toutes les commandes que j'ai essayées renvoient cette erreur à propos de 'SourceDistribution'.

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

J'en ai marre de désinstaller aussi :

pip uninstall pip
python -m pip uninstall pip setuptools

Quelqu'un a-t-il une autre solution pour désinstaller pip?

Ubuntu 18.04.3 LTS
Python 3.6.9
exécuter dans virtualenv

Salut @CharrierCoop ! Vous devriez pouvoir télécharger get-pip.py et installer pip 20.0.1 en l'utilisant.

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

Parfait !!
merci @pradyunsg

pouvez-vous s'il vous plaît supprimer la version 20.0 de PYPA ?

Non. Nous n'allons pas le supprimer. Nous avons une fonctionnalité standard pour "tirer" les versions cassées. Une fois que PyPI aura ajouté le support pour cela, nous retirerons cette version (si quelqu'un s'en soucie d'ici là).

Voir https://www.python.org/dev/peps/pep-0592/#motivation pour plus de détails.

sudo python get-pip.py pip==19.3.1"
résoudre ce problème

sudo python get-pip.py pip==19.3.1"
résoudre ce problème

Merci beaucoup

sudo python get-pip.py pip==19.3.1"
résoudre ce problème

Pas besoin que ce problème ait été résolu par @pradyunsg

Salut @CharrierCoop ! Vous devriez pouvoir télécharger get-pip.py et installer pip 20.0.1 en l'utilisant.

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

J'ai essayé de faire la même chose sur Raspberry Pi 4 ( Python 3.7.3, version pip - 20.0 et OS - Raspbian Buster Lite), mais cela n'a pas réussi.
ERREUR : impossible de trouver une version qui satisfait à l'exigence pi p
ERREUR : aucune distribution correspondante trouvée pour pip

Toute solution?

@Gilf641 Veuillez déposer un nouveau problème - ce sera plus facile à gérer pour les responsables.

Je vais aller de l'avant et fermer ce problème maintenant, car il semble que les choses fonctionnent pour la plupart des utilisateurs.

Si vous rencontrez toujours des problèmes, veuillez rechercher les doublons déposés précédemment (depuis le 21 janvier, pour le pip 20.0) et s'il n'y en a pas, déposez un nouveau problème.

Cette page vous a été utile?
0 / 5 - 0 notes