Pip: ImportError: não é possível importar o nome 'SourceDistribution' de 'pip._internal.distributions.source'

Criado em 15 out. 2019  ·  101Comentários  ·  Fonte: pypa/pip

Ambiente

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

  • versão pip: pip-19.2.3 (do conda) atualizado para 19.3 (via pip install --upgrade pip setuptools )
  • Versão do Python: python-3.7.3
  • SO: Linux

Fiz apenas pequenas alterações no meu código, mas hoje as compilações do CircleCI quebraram durante o estágio de compilação/instalação da minha ferramenta Python - vários ramos afetados. O tempo se encaixa no lançamento do pip 19.3 no PyPI.

Descrição

Parece que um lançamento recente do pip moveu alguns arquivos internos, meu palpite é # 6830.

Comportamento esperado

Como reproduzir

Saída completa em https://circleci.com/gh/peterjc/thapbi-pict/1073 que está rodando 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

Saída

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

Comentários muito úteis

Obrigado @PabloCastellano! Estou apenas ignorando os comentários aqui agora, já que não quero que minha frequência cardíaca suba mais. :)

Feito o lançamento da correção de bugs. Se isso ajudou, use 👍 neste post. Caso contrário, escreva um comentário com a mensagem de erro.

Todos 101 comentários

Seria realmente útil saber o que na configuração do CircleCI (ou conda?) está usando essas APIs internas - a reorganização não deve ter afetado nenhum código externo. O principal problema que conhecemos até agora é a reorganização do main, que afeta os scripts wrapper, mas este parece um pouco diferente. Qualquer insight que você pode dar seria muito útil, obrigado.

Confirmado que a remoção de pip install --upgrade pip setuptools corrigiu as coisas,

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

ou seja, algo quebrou em como eu atualizei do pip 19.2.3 para 19.3

Não estou usando intencionalmente o Python fornecido pelo CircleCI, mas o Python fornecido pelo Conda - há valor em mudar de pip ... para python -m pip ... apenas para remover a possibilidade de isso ser devido à mistura de Pythons?

Trabalhando em uma ramificação agora, adicionei um pouco mais de log e voltei para a versão quebrada:

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

Isso confirma que o traceback é acionado por pip install dist/thapbi_pict-*.whl (curinga para corresponder à única roda recém-construída).

Se vale a pena, acabei de confirmar que from pip._internal import main funciona em uma simples atualização do pip (no Windows, então não é uma boa comparação, mas enfim...). Portanto, suspeito que haja algo incompatível em seu ambiente, embora não consiga ver pelo rastreamento o que é.

CircleCI tem a capacidade de executar novamente um trabalho com acesso SSH à VM (não que eu já tenha usado), então, em teoria, isso poderia ser usado para depuração, mas eu realmente não sei por onde começar.

Eu tenho uma solução por enquanto e, em algum momento, o conda-forge também terá o pip 19.3 empacotado, portanto, a menos que outras pessoas vejam a mesma exceção, parece uma prioridade baixa?

OK legal. Se você tiver uma solução alternativa, não há problema em deixá-la lá por enquanto. Se outros adicionarem comentários informando que está acontecendo em outro lugar, podemos fazer mais pesquisas - talvez eles tenham informações extras que ajudem.

Estou enfrentando um problema semelhante no macOS, python: 3.6.9. O comando pip no meu terminal não funciona mais. Alguma sugestão?

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

Isso ajudou por enquanto

Eu tenho o mesmo problema no CircleCI desde 1 hora atrás.
A alteração da versão da imagem do docker de python:3.7 para python:3.7.4 corrige esse problema. (apenas solução alternativa). como isso:

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

Algum de vocês está usando cache? Eu acho que é possível que alguns internos do pip tenham mudado e quando você restaura o cache da versão antiga do python pip quebra. Sugiro que você invalide os caches do CI do círculo alterando o keys e veja o que acontece ... (funcionou para mim!)

Como sugerido por @bgkelly, limpar o cache também funcionou para mim!

Sim - o mesmo para mim - alterar a chave de cache resolveu isso para os projetos de nossa equipe no circleci. Obrigado @bgkelly

Alterar a chave de cache não resolveu para mim.
Adicionar um comentário em requirements.txt fez isso, mas essa não é uma solução desejada.

Tudo bem, isso parece ser um problema de cache para o CircleCI.

Alguém poderia entrar em contato com o pessoal do CircleCI (através de seus canais de suporte)? Seria ótimo se eles pudessem investigar isso e possivelmente entrar em contato aqui.

Olá pessoal,

Eu realmente não sei se isso ajuda você de alguma forma, mas recebi a mesma mensagem de erro na minha configuração do MSYS tentando instalar o WeasyPrint.

Depois de desinstalar o python3-pip e o python3-setuptools, apaguei todas as pastas pip em /usr/lib/python3.7/site-packages/ e reinstalei ambos .. resolvi esse erro 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 justo, agora me deparei com problemas de compilador ... mas talvez eu possa ajudar ....

Caso isso possa ajudar, encontrei o erro em um contexto diferente: ao copiar um ambiente virtual de uma imagem docker para outra, em uma configuração de vários estágios.

A imagem de origem contém uma versão menos recente de pip enquanto a imagem de destino contém uma versão atualizada de pip . Após copiar o diretório do ambiente virtual da imagem de origem para a imagem de destino, existem 2 diretórios diferentes ( pip-<version>.dist-info ) sob o ambiente virtual site-packages e pip não funciona, dando o mesmo erro relatado nesta edição.

Não gastei tempo solucionando o problema, pois sou um pouco cético em relação a essa abordagem que envolve a cópia do ambiente virtual em um ambiente onde já existem pacotes instalados.

De qualquer forma, parece ser um problema de colisão de pacotes.

Espero que isto ajude! :sorriso:

Oi
Acredito que vemos o mesmo problema em nosso servidor ReadTheDocs interno. Ele executa o seguinte comando ao construir um 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

Se eu limpar o cache de compilação por meio da interface GUI ReadTheDocs, a compilação será bem-sucedida - mas somente até a próxima vez que uma compilação for iniciada.

Aqui está o 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'

Oi,

Eu também encontrei o problema.

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

$ pip
Traceback (última chamada mais recente):
Arquivo "/home/jiang/anaconda3/bin/pip", linha 7, em
de pip._internal import main
Arquivo "/home/jiang/anaconda3/lib/python3.7/site-packages/pip/_internal/__init__.py", linha 40, em
de pip._internal.cli.autocompletion importar preenchimento automático
Arquivo "/home/jiang/anaconda3/lib/python3.7/site-packages/pip/_internal/cli/autocompletion.py", linha 8, em
de pip._internal.cli.main_parser importar create_main_parser
Arquivo "/home/jiang/anaconda3/lib/python3.7/site-packages/pip/_internal/cli/main_parser.py", linha 11, em
de pip._internal.commands import (
Arquivo "/home/jiang/anaconda3/lib/python3.7/site-packages/pip/_internal/commands/__init__.py", linha 9, em
de pip._internal.commands.download import DownloadCommand
Arquivo "/home/jiang/anaconda3/lib/python3.7/site-packages/pip/_internal/commands/download.py", linha 10, em
de pip._internal.operations.prepare import RequirementPreparer
Arquivo "/home/jiang/anaconda3/lib/python3.7/site-packages/pip/_internal/operations/prepare.py", linha 9, em
da importação de pip._internal.distributions (
Arquivo "/home/jiang/anaconda3/lib/python3.7/site-packages/pip/_internal/distributions/__init__.py", linha 1, em
de pip._internal.distributions.source import SourceDistribution
ImportError: não é possível importar o nome 'SourceDistribution' de 'pip._internal.distributions.source' (/home/jiang/anaconda3/lib/python3.7/site-packages/pip/_internal/distributions/source/__init__.py)

Conseguimos contornar nosso servidor ReadTheDocs local alterando o fluxo de compilação para usar especificamente a versão 19.2.3 do pip. Agora ReadTheDocs executa o seguinte comando de compilação - e não temos mais problemas de 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

Mais especificamente, atualizamos o arquivo python_environment.py local para usar uma versão específica do pip: https://github.com/readthedocs/readthedocs.org/blob/7212d6ff738b24a10fb0f4227d3fbdf69e5cab42/readthedocs/doc_builder/python_environments.py#L322

cmd = pip_install_cmd + ['pip']

alterado para:

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

Eu sei que minha configuração pode ser diferente da maioria, mas o problema do meu lado foi devido ao diretório PIP sources/ no ambiente virtual (provavelmente problemas de cache PIP ou algo assim). Deixe-me explicar:
Ao excluir o diretório user_builds/project/envs/ de um projeto e reconstruí-lo, ele funciona, mas somente até que você reconstrua com o diretório envs/ presente novamente. Passei muito tempo depurando qual era o problema e descobri que era o diretório user_builds/project/envs/ (ou algo dentro) causando problemas. Então eu fiz mais testes para descobrir que era o diretório user_builds/project/envs/latest/lib/python3.6/site-packages/pip/_internal/distributions/source/ que estava causando problemas especificamente. Eu removi o diretório user_builds/project/envs/latest/lib/python3.6/site-packages/pip/_internal/distributions/source/ , reconstruí e estava tudo bem. Eu reconstruí novamente e falhou. Eu verifiquei o diretório user_builds/project/envs/latest/lib/python3.6/site-packages/pip/_internal/distributions/ novamente e vi que source/ estava presente. Então eu fui para minha instalação global do Python e movi o diretório /path/to/lib/python3.6/dist-packages/pip/_internal/distributions/source/ do PIP, removi o diretório user_builds/project/envs/latest/lib/python3.6/site-packages/pip/_internal/distributions/source/ do ambiente do projeto e reconstruí. Isso foi construído com sucesso e não copiou a pasta source/ , perfeito. Então, agora, sempre que os documentos são compilados, eles são compilados sem erros. Espero que isto ajude alguém.

Felicidades.

Tente isto:

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

@Guru36

Tentei isso muitas vezes sem sucesso. Você tem que fazer isso no início de qualquer maneira, então isso não ajudaria. Obrigado mesmo assim.

Felicidades.

Tente isto:

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

Obrigada

Agora estou tendo problemas com isso na versão 0.20.

Olhando para isso agora pessoal. Se alguém pudesse fornecer instruções sobre como reproduzir com pip 20.0, seria ótimo!

Eu me deparo com o mesmo problema:

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

resulta em

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)

Se alguém puder fornecer instruções de como reproduzir com pip 20.0,

Em suma, "tente usar pip"! Os resultados de tentar instalar o scipy em um ambiente virtual funcional, que já possui o scipy instalado (ou seja, espero que o pip não faça 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'

O truque curl get-pip.py não funcionou para mim, mas resolvi procurar diferenças entre meu venv e o "código oficial" instalado no sistema. (Estou em um 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 @@
-from pip._internal.distributions.source.legacy import SourceDistribution
+de pip._internal.distributions.source import SourceDistribution
de pip._internal.distributions.wheel import WheelDistribution
de pip._internal.utils.typing import MYPY_CHECK_RUNNING

Mudar para python -m pip ajudou na minha situação. De https://github.com/ome/jenkins-library-recursivemerge/pull/4/files

Falha:

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

Passes:

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

@pradyunsg , no Fedora 29 posso reproduzir assim:

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

```
Traceback (última chamada mais recente):
Arquivo "/usr/lib64/python3.7/runpy.py", linha 193, em _run_module_as_main
"__main__", mod_spec)
Arquivo "/usr/lib64/python3.7/runpy.py", linha 85, em _run_code
exec(código, run_globals)
Arquivo "/home/kaiant/.local/lib/python3.7/site-packages/pip/__main__.py", linha 19, em
sys.exit(_main())
Arquivo "/home/kaiant/.local/lib/python3.7/site-packages/pip/_internal/cli/main.py", linha 73, em main
comando = create_command(cmd_name, isolated=("--isolated" em cmd_args))
Arquivo "/home/kaiant/.local/lib/python3.7/site-packages/pip/_internal/commands/__init__.py", linha 96, em create_command
modulo = importlib.import_module(module_path)
Arquivo "/usr/lib64/python3.7/importlib/__init__.py", linha 127, em import_module
return _bootstrap._gcd_import(nome[nível:], pacote, nível)
Arquivo "", linha 1006, em _gcd_import
Arquivo "", linha 983, em _find_and_load
Arquivo "", linha 967, em _find_and_load_unlocked
Arquivo "", linha 677, em _load_unlocked
Arquivo "", linha 728, em exec_module
Arquivo "", linha 219, em _call_with_frames_removed
Arquivo "/home/kaiant/.local/lib/python3.7/site-packages/pip/_internal/commands/install.py", linha 24, em
de pip._internal.cli.req_command import RequirementCommand
Arquivo "/home/kaiant/.local/lib/python3.7/site-packages/pip/_internal/cli/req_command.py", linha 20, em
de pip._internal.operations.prepare import RequirementPreparer
Arquivo "/home/kaiant/.local/lib/python3.7/site-packages/pip/_internal/operations/prepare.py", linha 16, em
da importação de pip._internal.distributions (
Arquivo "/home/kaiant/.local/lib/python3.7/site-packages/pip/_internal/distributions/__init__.py", linha 1, em
de pip._internal.distributions.source import SourceDistribution
ImportError: não é possível importar o nome 'SourceDistribution' de 'pip._internal.distributions.source' (/home/kaiant/.local/lib/python3.7/site-packages/pip/_internal/distributions/source/__init__.py)


Acabei de receber isso quando minha implantação atualizou automaticamente o pip de 19.3.1 para 20.0

Tudo já está usando python -m pip - esse não é o problema aqui

Posso te dizer que a correção do JediKev, que é deletar esta pasta:

site-packages/pip/_internal/distributions/source

corrigiu o problema

Um contexto Python Docker simples usando o contêiner python:3.7-slim (baseado em Debian) também é afetado:

[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

Tem a mesma coisa em python:3.7.6-alpine rodando em ações do github

Eu posso reproduzir este erro em um Dockerfile :

FROM python:3.7

COPY requirements.txt .

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

CMD pip --version

E em requirements.txst :


Quando eu construo esta imagem, recebo este erro desagradável. Se eu remover a linha que atualiza o pip, a imagem é compilada.

Ok, eu reproduzi isso localmente -- vou arquivar um PR com uma correção em breve.

Remover a pasta ./site-packages/pip/_internal/distributions/source ajuda!

Sim, pip versão 20.0 quebra

Sim, tendo o mesmo problema aqui (pip 20.0).

Sim, pip 20.0 quebra , usando "virtualenv ." comando para criar venv

O mesmo aqui, todas as nossas compilações de CI que atualizam o pip estão falhando.

Todas as compilações estão quebradas devido ao mesmo erro do nosso lado também.

Compilações quebradas

E se eu reverter para o pip 19.x? Funcionaria?

EDITAR:
pip install --upgrade "pip==19.3.1" ainda funciona.

O mesmo aqui com python 3.7.3 e pip 20.0

pip install pip"<20.0" solução temporária, mas funciona.

talvez seja possível criar um virtualenv configurando pip versio para 19.3.1 (o anterior)

Uma solução rápida que está funcionando é

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

Salvou nosso pipeline de CI

O Read The Docs também sofre com esse problema agora, fazendo com que a construção de documentos falhe consistentemente
373AED13-5DF1-4729-9923-114F83603B44

talvez seja possível criar uma configuração virtualenv pip versio para 19.3.1 (o anterior)

@manutero, o --no-download bandeira do virtualenv comando irá evitar a tentar baixar a versão mais recente de pip no momento da criação do ambiente.

Se você usar virtualenv, faça o downgrade para 19.x. Isso resolveu o problema no meu 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

Tive que selecionar a versão anterior para resolver,
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py pip=19.3.1

O mesmo aqui com python 3.7.6 e pip 20.0

pip versão-20.0
versão python - 3.6
Basta escrever abaixo das linhas no arquivo
/lib/python3.6/site-packages/pip/_internal/distributions/source/__init__.py

from .legacy import SourceDistribution

Outras pessoas que estão vendo essa falha podem confirmar que há uma pasta/fonte em pip/_internal/distributions?

Se você puder confirmar que a pasta existe, não comente aqui - use a reação 👍 neste post. Essa pasta não existe, use a 👎 reação.

mesmo problema aqui com o 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)

Ele não aparece com pip==19.2.3 então por enquanto eu reverti

Por favor, pare de denunciar "eu também". @pradyunsg está trabalhando em uma correção agora

Sim. bater isso agora funcionou ontem.

snippet para usuários do pipenv

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

Para uma correção rápida,

$(which easy_install) pip==19.3

também funciona ok

Para uma correção rápida,

$(which easy_install) pip==19.3

também funciona ok

Entre todas as soluções temporárias, apenas esta funcionou para mim

Eu me pergunto o que acontecerá quando eles removerem o easy_install... :) - Como vamos corrigir os problemas do pip então?

Substituindo pip install --upgrade pip por pip install --upgrade pip"<20.0" trabalhando aqui.

Tive que selecionar a versão anterior para resolver,
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py pip=19.3.1

Deve ser python3 get-pip.py pip==19.3.1

Substituindo pip install --upgrade pip por pip install --upgrade pip"<20.0" trabalhando aqui.

Me ajude no docker
RUN pip install --upgrade pip"<20.0"

Obrigado @PabloCastellano! Estou apenas ignorando os comentários aqui agora, já que não quero que minha frequência cardíaca suba mais. :)

Feito o lançamento da correção de bugs. Se isso ajudou, use 👍 neste post. Caso contrário, escreva um comentário com a mensagem de erro.

XD

Não quero que minha frequência cardíaca suba mais. :)
Feito o lançamento da correção de bugs.

@pradyunsg Você acabou de baixar o meu. Parece funcionar.

@SergeyLadutko :

Substituindo pip install --upgrade pip por pip install --upgrade pip"<20.0" trabalhando aqui.

Me ajude no docker
RUN pip install --upgrade pip"<20.0"

tente pip install --upgrade pip==19.3.1

ok, deixe-me executar minha compilação novamente

@pradyunsg Tiremos o

Observe que get-pip.py ainda não foi atualizado - isso porque, bem, eu bordei meu próprio ambiente de desenvolvimento para get-pip ao testar isso. :)

Vou atualizar isso nos próximos minutos.

Pode confirmar. pip==20.0.1 está funcionando bem

@pradyunsg alguma melhoria de CI para que isso não aconteça no futuro? Um contêiner docker seria suficiente. Você aceitaria PRs para isso?

Observe que get-pip.py ainda não foi atualizado - isso porque, bem, eu bordei meu próprio ambiente de desenvolvimento para get-pip ao testar isso. :)

Vou atualizar isso nos próximos minutos.

:) deixe-nos saber quando isso será bom para ir

Vou atualizar isso nos próximos minutos.

Tudo bem, empurrou isso agora. A mudança deve ter se propagado para bootstrap.pypa.io agora. Ou será muito em breve.

Nossa compilação agora passou com get-pip.py obrigado @pradyunsg

pip 20.0.1 funcionando corretamente. Obrigado @pradyunsg

Posso confirmar, o novo pip fica instalado agora que não sofre mais com esse erro. Obrigado @pradyunsg !

Obrigado @pradyunsg !!

obrigado @pradyunsg ! assim tanto

obrigado @pradyunsg pela solução rápida! 🎉

Obrigado @pradyunsg pelo

Eu acho que o problema foi criado porque existe um diretório de módulo source , bem como source.py no caminho pip/_internal/distributions e isso atrapalha as importações

Em pip/_internal/distributions/__init__.py tenha uma linha de importação:

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

Mas também há um diretório source com __init__.py lá 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__

Portanto, essa importação falhará. Renomear o source.py para _source.py e alterar a importação em __init__.py para from pip._internal.distributions._source import SourceDistribution parece corrigi-lo

@pradyunsg Tiremos o

Concordo, reviravolta fantástica na correção aqui!

Obrigado @pradyunsg

Mesmo erro acima.
Versão do Python: python-3.7.6
SO: Windows

Funciona depois de passar para o PIP 19.3.1

Funciona muito bem agora, obrigado.

Considerando a natureza desse bug, você pode remover a versão 20.0 do PYPA? https://pypi.org/project/pip/#history

Outra questão seria o que poderíamos fazer para evitar uma regressão semelhante no futuro.

Desculpe a todos pela quebra e obrigado por trabalhar conosco aqui para consertar essa quebra!

@xavfernandez descobriu por que isso aconteceu e faremos alterações em nosso processo de lançamento para evitar falhas semelhantes no futuro: #7624

ótimo trabalho, obrigado pelo retorno rápido como um raio!

Olá, estou preso em 20.0
Todos os comandos que tentei retornaram este erro sobre 'SourceDistribution'.

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

Eu cansei de desinstalar também:

pip uninstall pip
python -m pip uninstall pip setuptools

Alguém tem outra solução para desinstalar o pip?

Ubuntu 18.04.3 LTS
Python 3.6.9
executar em virtualenv

Olá @CharrierCoop! Você deve conseguir baixar get-pip.py e instalar o pip 20.0.1 usando isso.

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

Perfeito !!
obrigado @pradyunsg

você pode remover a versão 20.0 do PYPA?

Não. Não vamos excluí-lo. Temos um recurso com suporte padrão para "arrancar" versões quebradas. Assim que o PyPI adicionar suporte para isso, lançaremos esta versão (se alguém se importar até lá).

Consulte https://www.python.org/dev/peps/pep-0592/#motivation para obter mais detalhes.

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

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

Muito obrigado

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

Não há necessidade de que este problema tenha sido corrigido por @pradyunsg

Olá @CharrierCoop! Você deve conseguir baixar get-pip.py e instalar o pip 20.0.1 usando isso.

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

Tentei fazer o mesmo no Raspberry Pi 4 (Python 3.7.3, versão pip - 20.0 e OS - Raspbian Buster Lite), mas não obtive sucesso.
ERRO: Não foi possível encontrar uma versão que satisfaça o requisito pi p
ERRO: Nenhuma distribuição correspondente encontrada para pip

Qualquer solução?

@ Gilf641 Por favor, registre um novo problema - será mais fácil de gerenciar para os mantenedores.

Vou encerrar este problema agora, pois parece que as coisas estão funcionando para a maioria dos usuários.

Se você ainda estiver enfrentando problemas, procure duplicatas arquivadas anteriormente (desde 21 de janeiro, para pip 20.0) e, se não houver, registre um novo problema.

Esta página foi útil?
0 / 5 - 0 avaliações