Pip: ImportError: no se puede importar el nombre 'SourceDistribution' desde 'pip._internal.distributions.source'

Creado en 15 oct. 2019  ·  101Comentarios  ·  Fuente: pypa/pip

Ambiente

CircleCI usando Conda, por ejemplo, https://circleci.com/gh/peterjc/thapbi-pict/1073

  • versión de pip: pip-19.2.3 (de conda) actualizado a 19.3 (a través de pip install --upgrade pip setuptools )
  • Versión de Python: Python-3.7.3
  • SO: Linux

Solo realicé cambios menores en mi código, pero hoy las compilaciones de CircleCI se rompieron durante la etapa de compilación/instalación de mi herramienta Python: varias ramas afectadas. El momento se ajusta al lanzamiento de pip 19.3 en PyPI.

Descripción

Parece que una versión reciente de pip movió algunos archivos internos, supongo que es #6830.

Comportamiento esperado

Cómo reproducir

Salida completa en https://circleci.com/gh/peterjc/thapbi-pict/1073 que se ejecuta 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

Producción

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

Comentario más útil

¡Gracias @PabloCastellano! Solo estoy ignorando los comentarios aquí ahora, ya que no quiero que mi ritmo cardíaco suba más. :)

Hizo el lanzamiento de corrección de errores. Si eso ayudó, use 👍 en esta publicación. De lo contrario, escriba un comentario con el mensaje de error.

Todos 101 comentarios

Sería realmente útil saber qué en la configuración de CircleCI (¿o conda?) Está usando esas API internas: la reorganización no debería haber afectado ningún código externo. El principal problema que conocemos hasta ahora es la reorganización de main, que afecta a los scripts de contenedor, pero este se ve un poco diferente. Cualquier idea que pueda dar sería muy útil, gracias.

Confirmado que eliminando pip install --upgrade pip setuptools cosas arregladas,

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

es decir, algo se rompió en la forma en que actualicé de pip 19.2.3 a 19.3

No estoy usando intencionalmente el Python proporcionado por CircleCI, sino el Python provisto por Conda. ¿Tiene algún valor cambiar de pip ... a python -m pip ... solo para eliminar la posibilidad de que esto se deba a la mezcla de Pythons?

Trabajando en una rama ahora, agregó un poco más de registro y volvió a la versión rota:

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

Esto confirma que el rastreo se activa con pip install dist/thapbi_pict-*.whl (comodín para coincidir con la única rueda recién construida).

Por lo que vale, acabo de confirmar que from pip._internal import main funciona en una simple actualización de pip (en Windows, por lo que no es realmente una buena comparación, pero de todos modos...). Así que sospecho que hay algo que no coincide en su entorno, aunque no puedo ver en el rastreo qué es.

CircleCI tiene la capacidad de volver a ejecutar un trabajo con acceso SSH a la VM (no es que lo haya usado alguna vez), por lo que, en teoría, esto podría usarse para la depuración, pero realmente no sé por dónde empezar.

Tengo un trabajo por ahora, y en algún momento conda-forge tendrá pip 19.3 empaquetado también, así que a menos que otras personas vean la misma excepción, ¿parece una prioridad baja?

Está bien. Si tiene una solución alternativa, estoy bien dejándola ahí por ahora. Si otros agregan comentarios que informan que está sucediendo en otro lugar, entonces podemos investigar un poco más, tal vez tengan información adicional que sea útil.

Estoy enfrentando un problema similar en macOS, python: 3.6.9. El comando pip en mi terminal ya no funciona. ¿Alguna sugerencia?

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

Esto ayudó por ahora

Tengo el mismo problema en CircleCI desde hace 1 hora.
El cambio de versión de la imagen de la ventana acoplable de python: 3.7.4 soluciona este problema. (solo solución). como esto:

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

¿Alguno de ustedes está utilizando el almacenamiento en caché? Creo que es posible que algunas partes internas de pip hayan cambiado y cuando restauras el caché de la versión anterior de python, pip se rompe. Le sugiero que invalide los cachés de CI de su círculo cambiando el keys y vea qué sucede... (¡funcionó para mí!)

Como sugirió @bgkelly, ¡ limpiar el caché también funcionó para mí!

Sí, lo mismo para mí: cambiar la clave de caché ha resuelto esto para los proyectos de nuestro equipo en circleci. Gracias @bgkelly

Cambiar la clave de caché no me lo resolvió.
Sin embargo, agregar un comentario en requirements.txt hizo, pero esa no es una solución deseada.

Muy bien, esto parece un problema de almacenamiento en caché para CircleCI.

¿Podría alguien comunicarse con la gente de CircleCI (a través de sus canales de soporte)? Sería genial si pudieran investigar esto y posiblemente intervenir aquí.

Hola a todos,

Realmente no sé si esto te ayuda de alguna manera, pero recibí el mismo mensaje de error en mi configuración de MSYS al intentar instalar WeasyPrint.

Después de desinstalar python3-pip y python3-setuptools, eliminé todas las carpetas pip en /usr/lib/python3.7/site-packages/ y reinstalé ambos... resolví ese error específico.

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

Para ser justos, ahora me encontré con problemas con el compilador... pero tal vez podría ayudar...

En caso de que esto pueda ayudar, encontré el error en un contexto diferente: al copiar un entorno virtual de una imagen acoplable a otra, en una configuración de varias etapas.

La imagen de origen contiene una versión menos reciente de pip mientras que la imagen de destino contiene una versión mejorada de pip . Después de copiar el directorio del entorno virtual de la imagen de origen en la imagen de destino, hay 2 directorios diferentes ( pip-<version>.dist-info ) en el entorno virtual site-packages y pip no funciona, dando el mismo error que se informó en este problema.

No dediqué tiempo a solucionar el problema, ya que soy algo escéptico con respecto a este enfoque que implica copiar el entorno virtual en un entorno donde ya hay paquetes instalados.

En cualquier caso, parece ser un problema de colisión de paquetes.

¡Espero que esto ayude! :sonrisa:

Hola
Creo que vemos el mismo problema en nuestro servidor interno de ReadTheDocs. Ejecuta el siguiente comando al crear un documento:

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 borro la memoria caché de compilación a través de la interfaz GUI de ReadTheDocs, la compilación es exitosa, pero solo hasta la próxima vez que se inicie una compilación.

Aquí está el registro completo:

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'

Hola,

También me he encontrado con el problema.

Sistema operativo: Debian GNU/Linux 10 (Linux 4.19.0-6-amd64)
pipa: 19.3.1
cuenta: 4.7.12
Pitón: 3.7.4

pipa de $
Rastreo (llamadas recientes más última):
Archivo "/home/jiang/anaconda3/bin/pip", línea 7, en
de pip._internal importación principal
Archivo "/home/jiang/anaconda3/lib/python3.7/site-packages/pip/_internal/__init__.py", línea 40, en
desde pip._internal.cli.autocompletion importar autocompletar
Archivo "/home/jiang/anaconda3/lib/python3.7/site-packages/pip/_internal/cli/autocompletion.py", línea 8, en
desde pip._internal.cli.main_parser importar create_main_parser
Archivo "/home/jiang/anaconda3/lib/python3.7/site-packages/pip/_internal/cli/main_parser.py", línea 11, en
desde pip._internal.commands importar (
Archivo "/home/jiang/anaconda3/lib/python3.7/site-packages/pip/_internal/commands/__init__.py", línea 9, en
desde pip._internal.commands.download importar DownloadCommand
Archivo "/home/jiang/anaconda3/lib/python3.7/site-packages/pip/_internal/commands/download.py", línea 10, en
desde pip._internal.operations.prepare import RequirementPreparer
Archivo "/home/jiang/anaconda3/lib/python3.7/site-packages/pip/_internal/operations/prepare.py", línea 9, en
desde pip._internal.distributions import (
Archivo "/home/jiang/anaconda3/lib/python3.7/site-packages/pip/_internal/distributions/__init__.py", línea 1, en
de pip._internal.distributions.source importar SourceDistribution
ImportError: no se puede importar el nombre 'SourceDistribution' desde 'pip._internal.distributions.source' (/home/jiang/anaconda3/lib/python3.7/site-packages/pip/_internal/distributions/source/__init__.py)

Pudimos solucionar el problema en nuestro servidor ReadTheDocs local cambiando el flujo de compilación para usar específicamente la versión 19.2.3 de pip. Ahora ReadTheDocs ejecuta el siguiente comando de compilación, y ya no tenemos problemas de almacenamiento en caché:

/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

Más específicamente, actualizamos el archivo local python_environment.py para usar una versión pip específica: https://github.com/readthedocs/readthedocs.org/blob/7212d6ff738b24a10fb0f4227d3fbdf69e5cab42/readthedocs/doc_builder/python_environments.py#L322

cmd = pip_install_cmd + ['pip']

cambiado a:

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

Sé que mi configuración puede ser diferente a la mayoría, pero el problema por mi parte se debió al directorio PIP sources/ en el entorno virtual (probablemente problemas de almacenamiento en caché de PIP o algo así). Dejame explicar:
Al eliminar el directorio user_builds/project/envs/ para un proyecto y reconstruirlo, funciona, pero solo hasta que vaya a reconstruir con el directorio envs/ presente nuevamente. Pasé un montón de tiempo depurando cuál era el problema y resultó que era el directorio user_builds/project/envs/ (o algo dentro) que causaba problemas. Así que hice más pruebas para descubrir que era el directorio user_builds/project/envs/latest/lib/python3.6/site-packages/pip/_internal/distributions/source/ causaba problemas específicamente. Eliminé el directorio user_builds/project/envs/latest/lib/python3.6/site-packages/pip/_internal/distributions/source/ , lo reconstruí y todo estuvo bien. Reconstruí de nuevo y falló. Revisé el directorio user_builds/project/envs/latest/lib/python3.6/site-packages/pip/_internal/distributions/ nuevamente y vi que source/ estaba presente. Así que fui a mi instalación global de Python y moví el directorio /path/to/lib/python3.6/dist-packages/pip/_internal/distributions/source/ de PIP, eliminé el directorio user_builds/project/envs/latest/lib/python3.6/site-packages/pip/_internal/distributions/source/ del entorno del proyecto y lo reconstruí. Esto se construyó con éxito y no se copió sobre la carpeta source/ , perfecto. Así que ahora, cada vez que los documentos se compilan, se compilan sin errores. Espero que esto ayude a alguien más.

Salud.

Prueba esto:

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

@Guru36

Intenté eso muchas veces sin éxito. Tienes que hacer esto al principio de todos modos, así que esto no ayudaría. Gracias de todos modos.

Salud.

Prueba esto:

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

Gracias

Ahora tengo problemas con esto en la versión 0.20.

Mirando esto ahora amigos. Si alguien pudiera proporcionar instrucciones sobre cómo reproducir con pip 20.0, ¡sería genial!

Me encuentro con el mismo problema:

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

resultados en

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 alguien pudiera proporcionar instrucciones sobre cómo reproducir con pip 20.0,

En resumen, ¡"trata de usar pip"! Los resultados de intentar instalar scipy en un entorno virtual en funcionamiento, que ya tiene instalado scipy (es decir, espero que pip no haga nada):

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

El truco de curl get-pip.py no funcionó para mí, pero lo resolví buscando diferencias entre mi venv y el "código oficial" instalado en el sistema. (Estoy en un grupo, _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 @@
-desde pip._internal.distributions.source.legacy import SourceDistribution
+de pip._internal.distributions.source importar SourceDistribution
de pip._internal.distributions.wheel importar WheelDistribution
desde pip._internal.utils.typing importar MYPY_CHECK_RUNNING

Mudarme a python -m pip ayudó en mi situación. De https://github.com/ome/jenkins-library-recursivemerge/pull/4/files

falla:

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

Pases:

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

@pradyunsg , en Fedora 29 puedo reproducir así:

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

''
Rastreo (llamadas recientes más última):
Archivo "/usr/lib64/python3.7/runpy.py", línea 193, en _run_module_as_main
"__principal__", mod_spec)
Archivo "/usr/lib64/python3.7/runpy.py", línea 85, en _run_code
exec(código, run_globals)
Archivo "/home/kaiant/.local/lib/python3.7/site-packages/pip/__main__.py", línea 19, en
sys.exit(_main())
Archivo "/home/kaiant/.local/lib/python3.7/site-packages/pip/_internal/cli/main.py", línea 73, en main
comando = crear_comando(cmd_name, aislado=("--aislado" en cmd_args))
Archivo "/home/kaiant/.local/lib/python3.7/site-packages/pip/_internal/commands/__init__.py", línea 96, en create_command
módulo = importlib.import_module(module_path)
Archivo "/usr/lib64/python3.7/importlib/__init__.py", línea 127, en import_module
return _bootstrap._gcd_import(nombre[nivel:], paquete, nivel)
Archivo "", línea 1006, en _gcd_import
Archivo "", línea 983, en _buscar_y_cargar
Archivo "", línea 967, en _buscar_y_cargar_desbloqueado
Archivo "", línea 677, en _load_unlocked
Archivo "", línea 728, en exec_module
Archivo "", línea 219, en _llamada_con_marcos_eliminados
Archivo "/home/kaiant/.local/lib/python3.7/site-packages/pip/_internal/commands/install.py", línea 24, en
desde pip._internal.cli.req_command import RequirementCommand
Archivo "/home/kaiant/.local/lib/python3.7/site-packages/pip/_internal/cli/req_command.py", línea 20, en
desde pip._internal.operations.prepare import RequirementPreparer
Archivo "/home/kaiant/.local/lib/python3.7/site-packages/pip/_internal/operations/prepare.py", línea 16, en
desde pip._internal.distributions import (
Archivo "/home/kaiant/.local/lib/python3.7/site-packages/pip/_internal/distributions/__init__.py", línea 1, en
de pip._internal.distributions.source importar SourceDistribution
ImportError: no se puede importar el nombre 'SourceDistribution' desde 'pip._internal.distributions.source' (/home/kaiant/.local/lib/python3.7/site-packages/pip/_internal/distributions/source/__init__.py)


Acabo de recibir esto cuando mi implementación actualizó automáticamente pip de 19.3.1 a 20.0

Todo ya está usando python -m pip - ese no es el problema aquí

Puedo decirles que la solución de JediKev es eliminar esta carpeta:

paquetes-sitio/pip/_internal/distributions/source

arregló el problema

También se ve afectado un contexto simple de Python Docker que utiliza el contenedor python:3.7-slim (basado en Debian):

[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

Obtuve lo mismo en python:3.7.6-alpine ejecutándose en acciones de github

Puedo reproducir este error en un Dockerfile :

FROM python:3.7

COPY requirements.txt .

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

CMD pip --version

Y en requirements.txst :


Cuando construyo esta imagen, aparece este desagradable error. Si elimino la línea que actualiza pip, la imagen se construye.

De acuerdo, he reproducido esto localmente. Presentaré un PR con una solución pronto.

¡Eliminar la carpeta ./site-packages/pip/_internal/distributions/source ayuda!

Sí, pip versión 20.0 se rompe

Sí, tengo el mismo problema aquí (pip 20.0).

Sí, pip 20.0 se rompe, usando "virtualenv". comando para crear venv

Lo mismo aquí, todas nuestras compilaciones de CI que actualizan pip están fallando.

Todas las compilaciones están rotas debido al mismo error de nuestra parte también.

Las construcciones se rompieron

¿Qué pasa si vuelvo a pip 19.x? ¿Funcionaría?

EDITAR:
pip install --upgrade "pip==19.3.1" todavía funciona.

Lo mismo aquí con python 3.7.3 y pip 20.0

pip install pip"<20.0" solución temporal pero funciona.

tal vez sea posible crear una versión virtualenv configurando pip a 19.3.1 (la anterior)

Una solución rápida que está funcionando es

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

Guardó nuestra canalización de CI

Read The Docs también está plagado de este problema ahora, lo que hace que la creación de documentos falle constantemente
373AED13-5DF1-4729-9923-114F83603B44

tal vez sea posible crear una versión de pip de configuración virtualenv a 19.3.1 (la anterior)

@manutero, el --no-download bandera de la virtualenv comando evitar tratar de descargar la última versión de pip en el momento de la creación del entorno.

Si usa virtualenv, simplemente cambie a 19.x. Esto resolvió el problema en mi 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

Tuve que seleccionar la versión anterior para resolver,
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py pip=19.3.1

Lo mismo aquí con python 3.7.6 y pip 20.0

pip versión-20.0
versión de Python - 3.6
Simplemente escriba debajo de las líneas en el archivo
/lib/python3.6/site-packages/pip/_internal/distributions/source/__init__.py

desde .legacy import SourceDistribution

¿Pueden otras personas que vean este error confirmar que hay una fuente/carpeta en pip/_internal/distributions?

Si puede confirmar que esa carpeta existe, no haga comentarios aquí; use la reacción 👍 en esta publicación. Esa carpeta no existe, usa la reacción 👎.

mismo problema aquí con 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)

No aparece con pip==19.2.3 así que por ahora lo revertí

Por favor, deja de denunciar "yo también". @pradyunsg está trabajando en una solución en este momento

Sí. golpear esto ahora funcionó ayer.

fragmento para usuarios de pipenv

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

Para una solución rápida,

$(which easy_install) pip==19.3

también funciona bien

Para una solución rápida,

$(which easy_install) pip==19.3

también funciona bien

Entre todas las soluciones temporales, solo esta funcionó para mí

Me pregunto qué pasará cuando eliminen easy_install... :) - ¿Cómo vamos a solucionar los problemas de pip entonces?

Reemplazando pip install --upgrade pip con pip install --upgrade pip"<20.0" trabajando aquí.

Tuve que seleccionar la versión anterior para resolver,
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py pip=19.3.1

Debería ser python3 get-pip.py pip==19.3.1

Reemplazando pip install --upgrade pip con pip install --upgrade pip"<20.0" trabajando aquí.

ayudame en docker
EJECUTAR pip install --upgrade pip"<20.0"

¡Gracias @PabloCastellano! Solo estoy ignorando los comentarios aquí ahora, ya que no quiero que mi ritmo cardíaco suba más. :)

Hizo el lanzamiento de corrección de errores. Si eso ayudó, use 👍 en esta publicación. De lo contrario, escriba un comentario con el mensaje de error.

XD

No quiero que mi ritmo cardíaco suba más. :)
Hizo el lanzamiento de corrección de errores.

@pradyunsg Acabas de bajar el mío. Parece funcionar.

@SergeyLadutko :

Reemplazando pip install --upgrade pip con pip install --upgrade pip"<20.0" trabajando aquí.

ayudame en docker
EJECUTAR pip install --upgrade pip"<20.0"

prueba pip install --upgrade pip==19.3.1

ok déjame ejecutar mi compilación de nuevo

@pradyunsg Me quito el sombrero por la solución rápida, realmente lo apreciamos <3 Puedo confirmar que esta solución se ha afianzado en los trabajos de CircleCI, para cualquiera que se lo pregunte.

Tenga en cuenta que get-pip.py aún no se ha actualizado; eso se debe a que, bueno, borré mi propio entorno de desarrollo para get-pip cuando probé esto. :)

Lo actualizaré en los próximos minutos.

Puede confirmar. pip==20.0.1 funciona bien

@pradyunsg ¿ alguna mejora de CI para que no suceda en el futuro? Un contenedor docker sería suficiente. ¿Aceptarías relaciones públicas por esto?

Tenga en cuenta que get-pip.py aún no se ha actualizado; eso se debe a que, bueno, borré mi propio entorno de desarrollo para get-pip cuando probé esto. :)

Lo actualizaré en los próximos minutos.

:) háganos saber cuándo estará listo para comenzar

Lo actualizaré en los próximos minutos.

Muy bien, empujó esto ahora. El cambio ya debería haberse propagado a bootstrap.pypa.io. O lo hará muy pronto.

Nuestra compilación ahora pasó con get-pip.py gracias @pradyunsg

pip 20.0.1 funcionando correctamente. Gracias @pradyunsg

Puedo confirmar que el nuevo pip se instala ahora y ya no sufre este error. Gracias @pradyunsg !

Gracias @pradyunsg !!

gracias @pradyunsg ! muchisísimo

¡gracias @pradyunsg por la solución rápida! 🎉

¡Gracias @pradyunsg por la respuesta rápida!

Creo que el problema se creó porque hay un directorio de módulos source y source.py en la ruta pip/_internal/distributions y eso estropea las importaciones.

En pip/_internal/distributions/__init__.py tiene una línea de importación:

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

Pero también hay un directorio source con __init__.py dentro,

  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__

Por lo tanto, esa importación fallará. Cambiar el nombre de source.py a _source.py y cambiar la importación en __init__.py a from pip._internal.distributions._source import SourceDistribution parece solucionarlo

@pradyunsg Me quito el sombrero por la solución rápida, realmente lo apreciamos <3

De acuerdo, ¡un cambio fantástico en la solución aquí!

Gracias @pradyunsg

Mismo error que el anterior.
Versión de Python: Python-3.7.6
SO: Windows

Funciona después de pasar a PIP 19.3.1

Funciona muy bien ahora, gracias.

Teniendo en cuenta la naturaleza de este error, ¿puede eliminar la versión 20.0 de PYPA? https://pypi.org/project/pip/#history

Otra pregunta sería qué podríamos hacer para evitar una regresión similar en el futuro.

¡Lo siento a todos por la rotura y gracias por trabajar con nosotros aquí para arreglar esta rotura!

@xavfernandez descubrió por qué sucedió esto y realizaremos cambios en nuestro proceso de lanzamiento para evitar fallas similares en el futuro: #7624

¡Gran trabajo, gracias por el cambio tan rápido como un rayo!

Hola, estoy atascado en 20.0
Todos los comandos que probé devuelven este error sobre 'SourceDistribution'.

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

Me cansé de desinstalar también:

pip uninstall pip
python -m pip uninstall pip setuptools

¿Alguien tiene otra solución para desinstalar pip?

Ubuntu 18.04.3 LTS
Pitón 3.6.9
ejecutar en virtualenv

¡Hola @CharrierCoop! Debería poder descargar get-pip.py e instalar pip 20.0.1 usando eso.

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

Perfecto !!
gracias @pradyunsg

¿Puedes eliminar la versión 20.0 de PYPA?

No. No lo vamos a borrar. Tenemos una función respaldada por estándar para "tirar" de lanzamientos rotos. Una vez que PyPI agregue soporte para eso, retiraremos esta versión (si a alguien le importa para entonces).

Consulte https://www.python.org/dev/peps/pep-0592/#motivation para obtener más detalles.

sudo python get-pip.py pip==19.3.1"
solucionar este problema

sudo python get-pip.py pip==19.3.1"
solucionar este problema

Muchísimas gracias

sudo python get-pip.py pip==19.3.1"
solucionar este problema

No es necesario que @pradyunsg solucione este problema

¡Hola @CharrierCoop! Debería poder descargar get-pip.py e instalar pip 20.0.1 usando eso.

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

Intenté hacer lo mismo en Raspberry Pi 4 (Python 3.7.3, versión pip - 20.0 y OS - Raspbian Buster Lite), pero no tuve éxito.
ERROR: No se pudo encontrar una versión que cumpla con el requisito pi p
ERROR: No se encontró una distribución coincidente para pip

¿Alguna solución?

@Gilf641 Presente un nuevo problema; será más fácil de administrar para los mantenedores.

Seguiré adelante y cerraré este problema ahora, ya que parece que las cosas funcionan para la mayoría de los usuarios.

Si aún tiene problemas, busque duplicados presentados anteriormente (desde el 21 de enero, para pip 20.0) y, si no hay ninguno, presente un nuevo problema.

¿Fue útil esta página
0 / 5 - 0 calificaciones