Pip: Pip 20.2.4 entra em resolução infinita de dependências

Criado em 19 out. 2020  ·  40Comentários  ·  Fonte: pypa/pip

Olá,

Meu CI entra em resolução infinita ao tentar instalar as dependências de um projeto para teste:

pip install -e .[test] --use-feature=2020-resolver -i https://artifactory.company.com/api/pypi/pypi/simple

Resultado

Looking in indexes: https://artifactory.company.com/api/pypi/pypi/simple
Collecting deprecation
  Downloading https://artifactory.company.com/api/pypi/pypi/packages/packages/02/c3/253a89ee03fc9b9682f1541728eb66db7db22148cd94f89ab22528cd1e1b/deprecation-2.1.0-py2.py3-none-any.whl (11 kB)
Collecting six
  Downloading https://artifactory.company.com/api/pypi/pypi/packages/packages/ee/ff/48bde5c0f013094d729fe4b0316ba2a24774b3ff1c52d924a8a4cb04078a/six-1.15.0-py2.py3-none-any.whl (10 kB)
Collecting toolz
  Downloading https://artifactory.company.com/api/pypi/pypi/packages/packages/12/f5/537e55f8ba664ff2a26f26913010fb0fcb98b6bbadc6158af888184fd0b7/toolz-0.11.1-py3-none-any.whl (55 kB)
Collecting packaging
  Downloading https://artifactory.company.com/api/pypi/pypi/packages/packages/46/19/c5ab91b1b05cfe63cccd5cfc971db9214c6dd6ced54e33c30d5af1d2bc43/packaging-20.4-py2.py3-none-any.whl (37 kB)
Collecting pyparsing>=2.0.2
  Downloading https://artifactory.company.com/api/pypi/pypi/packages/packages/8a/bb/488841f56197b13700afd5658fc279a2025a39e22449b7cf29864669b15d/pyparsing-2.4.7-py2.py3-none-any.whl (67 kB)
Installing collected packages: six, pyparsing, packaging, toolz, deprecation
Successfully installed deprecation-2.1.0 packaging-20.4 pyparsing-2.4.7 six-1.15.0 toolz-0.11.1
[32;1m$ pip install git+https://${CI_REGISTRY_USER}:${CI_JOB_TOKEN}@gitlab.company.com/proj/pygraph.git<strong i="11">@Dev_Py3</strong> ${PIP_OPTS}[0;m
Looking in indexes: https://artifactory.company.com/api/pypi/pypi/simple
Collecting git+https://gitlab-ci-token:****@gitlab.company.com/proj/pygraph.git<strong i="12">@Dev_Py3</strong>
  Cloning https://gitlab-ci-token:****@gitlab.company.com/proj/pygraph.git (to revision Dev_Py3) to /tmp/pip-req-build-eulnmcb2
Collecting networkx==2.*
  Downloading https://artifactory.company.com/api/pypi/pypi/packages/packages/9b/cd/dc52755d30ba41c60243235460961fc28022e5b6731f16c268667625baea/networkx-2.5-py3-none-any.whl (1.6 MB)
Collecting redis
  Downloading https://artifactory.company.com/api/pypi/pypi/packages/packages/a7/7c/24fb0511df653cf1a5d938d8f5d19802a88cef255706fdda242ff97e91b7/redis-3.5.3-py2.py3-none-any.whl (72 kB)
Collecting decorator>=4.3.0
  Downloading https://artifactory.company.com/api/pypi/pypi/packages/packages/ed/1b/72a1821152d07cf1d8b6fce298aeb06a7eb90f4d6d41acec9861e7cc6df0/decorator-4.4.2-py2.py3-none-any.whl (9.2 kB)
Building wheels for collected packages: graph-pygraph
  Building wheel for graph-pygraph (setup.py): started
  Building wheel for graph-pygraph (setup.py): finished with status 'done'
  Created wheel for graph-pygraph: filename=graph_pygraph-0.0.202010091542+devpy3-py3-none-any.whl size=71373 sha256=610fe21400ba7adec344b8345b819d42244631d11227a24bfb0fe068c959c309
  Stored in directory: /tmp/pip-ephem-wheel-cache-ovmjos36/wheels/7e/80/09/96d325dfa75fe4d16a6345d433dc8d944ebe48f4a049a12633
Successfully built graph-pygraph
Installing collected packages: decorator, redis, networkx, graph-pygraph
Successfully installed decorator-4.4.2 graph-pygraph-0.0.202010091542+devpy3 networkx-2.5 redis-3.5.3
[32;1m$ pip install git+https://${CI_REGISTRY_USER}:${CI_JOB_TOKEN}@gitlab.company.com/proj/parser.git<strong i="13">@Dev_Py3</strong> ${PIP_OPTS}[0;m
Looking in indexes: https://artifactory.company.com/api/pypi/pypi/simple
Collecting git+https://gitlab-ci-token:****@gitlab.company.com/proj/parser.git<strong i="14">@Dev_Py3</strong>
  Cloning https://gitlab-ci-token:****@gitlab.company.com/proj/parser.git (to revision Dev_Py3) to /tmp/pip-req-build-h_satb7q
Requirement already satisfied: deprecation in ./.venv/lib/python3.6/site-packages (from graph-parser==0.0.202009100923+devpy3) (2.1.0)
Requirement already satisfied: six in ./.venv/lib/python3.6/site-packages (from graph-parser==0.0.202009100923+devpy3) (1.15.0)
Collecting defusedxml
  Downloading https://artifactory.company.com/api/pypi/pypi/packages/packages/06/74/9b387472866358ebc08732de3da6dc48e44b0aacd2ddaa5cb85ab7e986a2/defusedxml-0.6.0-py2.py3-none-any.whl (23 kB)
Requirement already satisfied: packaging in ./.venv/lib/python3.6/site-packages (from deprecation->graph-parser==0.0.202009100923+devpy3) (20.4)
Requirement already satisfied: six in ./.venv/lib/python3.6/site-packages (from graph-parser==0.0.202009100923+devpy3) (1.15.0)
Requirement already satisfied: pyparsing>=2.0.2 in ./.venv/lib/python3.6/site-packages (from packaging->deprecation->graph-parser==0.0.202009100923+devpy3) (2.4.7)
Building wheels for collected packages: graph-parser
  Building wheel for graph-parser (setup.py): started
  Building wheel for graph-parser (setup.py): finished with status 'done'
  Created wheel for graph-parser: filename=graph_parser-0.0.202009100923+devpy3-py3-none-any.whl size=20698 sha256=f2d7b651180d9f844b7aafe8b9431938ceecbfec798407c47b7258b94528c75c
  Stored in directory: /tmp/pip-ephem-wheel-cache-bmna_g2x/wheels/fb/eb/f2/38806b77dcb72c250f63911a3567922b604ab6e88ab74ff980
Successfully built graph-parser
Installing collected packages: defusedxml, graph-parser
Successfully installed defusedxml-0.6.0 graph-parser-0.0.202009100923+devpy3
[32;1m$ pip install git+https://${CI_REGISTRY_USER}:${CI_JOB_TOKEN}@gitlab.company.com/proj/interfaces.git<strong i="15">@Dev_Py3</strong> --no-deps ${PIP_OPTS}[0;m
Looking in indexes: https://artifactory.company.com/api/pypi/pypi/simple
Collecting git+https://gitlab-ci-token:****@gitlab.company.com/proj/interfaces.git<strong i="16">@Dev_Py3</strong>
  Cloning https://gitlab-ci-token:****@gitlab.company.com/proj/interfaces.git (to revision Dev_Py3) to /tmp/pip-req-build-20dgw2sv
Building wheels for collected packages: graph-interfaces
  Building wheel for graph-interfaces (setup.py): started
  Building wheel for graph-interfaces (setup.py): finished with status 'done'
  Created wheel for graph-interfaces: filename=graph_interfaces-0.0.202009180922+devpy3-py3-none-any.whl size=36309 sha256=4a461620d4810f49bd1072a202ab767d56a171bcaa6c5609dcdbaadcc7c4f0a9
  Stored in directory: /tmp/pip-ephem-wheel-cache-5fdbdk3o/wheels/03/ab/79/5bc1653cb185c54b17d12b2b8d495e5231cf117605d3073d9e
Successfully built graph-interfaces
Installing collected packages: graph-interfaces
Successfully installed graph-interfaces-0.0.202009180922+devpy3
[32;1m$ pip install git+https://${CI_REGISTRY_USER}:${CI_JOB_TOKEN}@gitlab.company.com/proj/post-binding.git<strong i="17">@Dev_Py3</strong> --no-deps ${PIP_OPTS}[0;m
Looking in indexes: https://artifactory.company.com/api/pypi/pypi/simple
Collecting git+https://gitlab-ci-token:****@gitlab.company.com/proj/post-binding.git<strong i="18">@Dev_Py3</strong>
  Cloning https://gitlab-ci-token:****@gitlab.company.com/proj/post-binding.git (to revision Dev_Py3) to /tmp/pip-req-build-94mbisdx
Building wheels for collected packages: graph-post-bindings
  Building wheel for graph-post-bindings (setup.py): started
  Building wheel for graph-post-bindings (setup.py): finished with status 'done'
  Created wheel for graph-post-bindings: filename=graph_post_bindings-Dev-py3-none-any.whl size=211749 sha256=efbf8dfa72e4e461740a19a1208952d712fdcace52f17379fd7ad18d9da3b912
  Stored in directory: /tmp/pip-ephem-wheel-cache-vwr6n_g0/wheels/43/7e/ef/8849b821244fee59fc5b97c8694cf87e5609633ea26d65f8a0
Successfully built graph-post-bindings
Installing collected packages: graph-post-bindings
Successfully installed graph-post-bindings-Dev
[32;1m$ pip install -e .[test] ${PIP_OPTS}[0;m
Looking in indexes: https://artifactory.company.com/api/pypi/pypi/simple
Obtaining file:///tmp/proj/scenarios
Requirement already satisfied: graph-pygraph<1 in ./.venv/lib/python3.6/site-packages (from graph-scenarios==0.0.202010191027+unknown) (0.0.202010091542+devpy3)
Requirement already satisfied: graph-interfaces<1 in ./.venv/lib/python3.6/site-packages (from graph-scenarios==0.0.202010191027+unknown) (0.0.202009180922+devpy3)
Requirement already satisfied: graph-parser<1 in ./.venv/lib/python3.6/site-packages (from graph-scenarios==0.0.202010191027+unknown) (0.0.202009100923+devpy3)
Requirement already satisfied: graph-post_bindings==Dev in ./.venv/lib/python3.6/site-packages (from graph-scenarios==0.0.202010191027+unknown) (Dev)
Requirement already satisfied: toolz in ./.venv/lib/python3.6/site-packages (from graph-scenarios==0.0.202010191027+unknown) (0.11.1)
Requirement already satisfied: graph-pygraph<1 in ./.venv/lib/python3.6/site-packages (from graph-scenarios==0.0.202010191027+unknown) (0.0.202010091542+devpy3)
Requirement already satisfied: graph-interfaces<1 in ./.venv/lib/python3.6/site-packages (from graph-scenarios==0.0.202010191027+unknown) (0.0.202009180922+devpy3)
Requirement already satisfied: graph-parser<1 in ./.venv/lib/python3.6/site-packages (from graph-scenarios==0.0.202010191027+unknown) (0.0.202009100923+devpy3)
Requirement already satisfied: graph-post_bindings==Dev in ./.venv/lib/python3.6/site-packages (from graph-scenarios==0.0.202010191027+unknown) (Dev)
Requirement already satisfied: toolz in ./.venv/lib/python3.6/site-packages (from graph-scenarios==0.0.202010191027+unknown) (0.11.1)
Collecting cerberus
  Downloading https://artifactory.company.com/api/pypi/pypi/packages/packages/90/a7/71c6ed2d46a81065e68c007ac63378b96fa54c7bb614d653c68232f9c50c/Cerberus-1.3.2.tar.gz (52 kB)
Requirement already satisfied: setuptools in ./.venv/lib/python3.6/site-packages (from cerberus->graph-scenarios==0.0.202010191027+unknown) (50.3.2)
Requirement already satisfied: redis in ./.venv/lib/python3.6/site-packages (from graph-pygraph<1->graph-scenarios==0.0.202010191027+unknown) (3.5.3)
Requirement already satisfied: networkx==2.* in ./.venv/lib/python3.6/site-packages (from graph-pygraph<1->graph-scenarios==0.0.202010191027+unknown) (2.5)
Requirement already satisfied: graph-parser<1 in ./.venv/lib/python3.6/site-packages (from graph-scenarios==0.0.202010191027+unknown) (0.0.202009100923+devpy3)
Requirement already satisfied: graph-pygraph<1 in ./.venv/lib/python3.6/site-packages (from graph-scenarios==0.0.202010191027+unknown) (0.0.202010091542+devpy3)
Requirement already satisfied: redis in ./.venv/lib/python3.6/site-packages (from graph-pygraph<1->graph-scenarios==0.0.202010191027+unknown) (3.5.3)
Requirement already satisfied: deprecation in ./.venv/lib/python3.6/site-packages (from graph-parser<1->graph-scenarios==0.0.202010191027+unknown) (2.1.0)
Requirement already satisfied: six in ./.venv/lib/python3.6/site-packages (from graph-parser<1->graph-scenarios==0.0.202010191027+unknown) (1.15.0)
Requirement already satisfied: defusedxml in ./.venv/lib/python3.6/site-packages (from graph-parser<1->graph-scenarios==0.0.202010191027+unknown) (0.6.0)
Requirement already satisfied: toolz in ./.venv/lib/python3.6/site-packages (from graph-scenarios==0.0.202010191027+unknown) (0.11.1)
Collecting graph-parser<1
  Downloading https://artifactory.company.com/api/pypi/pypi/graph-parser/0.0.202009100923%2Bunknown/graph_parser-0.0.202009100923%2Bunknown-py3-none-any.whl (20 kB)
Requirement already satisfied: deprecation in ./.venv/lib/python3.6/site-packages (from graph-parser<1->graph-scenarios==0.0.202010191027+unknown) (2.1.0)
Requirement already satisfied: six in ./.venv/lib/python3.6/site-packages (from graph-parser<1->graph-scenarios==0.0.202010191027+unknown) (1.15.0)
Requirement already satisfied: defusedxml in ./.venv/lib/python3.6/site-packages (from graph-parser<1->graph-scenarios==0.0.202010191027+unknown) (0.6.0)
Requirement already satisfied: toolz in ./.venv/lib/python3.6/site-packages (from graph-scenarios==0.0.202010191027+unknown) (0.11.1)

As últimas 4 linhas se repetem para sempre:

Requirement already satisfied: deprecation in ./.venv/lib/python3.6/site-packages (from graph-parser<1->graph-scenarios==0.0.202010191027+unknown) (2.1.0)
Requirement already satisfied: six in ./.venv/lib/python3.6/site-packages (from graph-parser<1->graph-scenarios==0.0.202010191027+unknown) (1.15.0)
Requirement already satisfied: defusedxml in ./.venv/lib/python3.6/site-packages (from graph-parser<1->graph-scenarios==0.0.202010191027+unknown) (0.6.0)
Requirement already satisfied: toolz in ./.venv/lib/python3.6/site-packages (from graph-scenarios==0.0.202010191027+unknown) (0.11.1)

Informação adicional

Na saída acima, PIP_OPTS é definido como --use-feature=2020-resolver -i https://artifactory.company.com/api/pypi/pypi/simple .

Usamos um índice hospedado por empresa que não apresenta problemas com pip==20.2.3 .

!release blocker new resolver bug

Comentários muito úteis

Obrigado! Consegui limitar o conjunto de requisitos problemáticos para

pytest-mock>=1.11.0
pytest-sugar>=0.9.3
pytest-testmon<1.0.0
coverage==5.3

Remover qualquer um desses e o resolvedor seria capaz de produzir uma solução. Vou tentar construir um caso de teste e trabalhar a partir dele (espero que durante a semana).


Observação (para mim mesmo): Minha hipótese atual é que esse problema pode ser acionado se o resolvedor detectar mais de um conflito não relacionado. Ele veria um, voltaria para aquele, veria o outro, voltaria para aquele, e acertaria o primeiro novamente.

Todos 40 comentários

Oi! Obrigado por registrar este problema! Você poderia compartilhar os requisitos que o pip está tentando instalar? Isso estaria em setup.py/pyproject.toml para o projeto relevante.

As dependências "públicas" são:

    install_requires=[
        'cerberus',
        '<inhouse component 1>',
        '<inhouse component 2>',
        '<inhouse component 3>',
        '<inhouse component 4>',
        '<inhouse component 5>',
        'pint',
        '<inhouse component 6>',
        '<inhouse component 7>',
        'toolz',
        'pyyaml>=5.1',
    ],
    extras_require={'test': ['pylint', 'pytest>=4', 'pytest-cov', 'pytest-html', 'pytest-xdist',]},

no entanto, como você pode ver, temos várias bibliotecas internas que também são necessárias.

Aqui está pip list de qual versão 20.2.3 instala caso ajude:

$ pip list
Package              Version                  Location
-------------------- ------------------------ ------------------
amqp                 5.0.1
apipkg               1.5
asteval              0.9.19
astroid              2.4.2
attrs                20.2.0
<inhouse>
billiard             3.6.3.0
celery               5.0.1
Cerberus             1.3.2
certifi              2020.6.20
chardet              3.0.4
click                7.1.2
click-didyoumean     0.0.3
click-repl           0.1.6
coverage             5.3
cycler               0.10.0
decorator            4.4.2
defusedxml           0.6.0
deprecation          2.1.0
execnet              1.7.1
future               0.18.2
<inhouse>
<inhouse>
<inhouse>
<inhouse>
<inhouse>
h5py                 2.10.0
importlib-metadata   2.0.0
importlib-resources  3.0.0
iniconfig            1.1.1
isort                5.6.4
kiwisolver           1.2.0
kombu                5.0.2
lazy-object-proxy    1.4.3
<inhouse>
lmfit                1.0.1
matplotlib           3.3.2
mccabe               0.6.1
munch                2.5.0
networkx             2.5
numpy                1.19.2
packaging            20.4
pandas               1.1.3
Pillow               8.0.0
Pint                 0.16.1
pip                  20.2.3
pluggy               0.13.1
<inhouse>
<inhouse>
prompt-toolkit       3.0.8
py                   1.9.0
<inhouse>
<inhouse>
<inhouse>
pylint               2.6.0
pyparsing            2.4.7
<inhouse>
pytest               6.1.1
pytest-cov           2.10.1
pytest-forked        1.3.0
pytest-html          2.1.1
pytest-metadata      1.10.0
WARNING: You are using pip version 20.2.3; however, version 20.2.4 is available.
You should consider upgrading via the '/tmp/ues/scenarios/.venv/bin/python -m pip install --upgrade pip' command.
pytest-xdist         2.1.0
python-dateutil      2.8.1
pytz                 2020.1
PyYAML               5.3.1
redis                3.5.3
scipy                1.5.3
setuptools           50.3.2
six                  1.15.0
tabulate             0.8.7
toml                 0.10.1
toolz                0.11.1
typed-ast            1.4.1
uncertainties        3.1.4
vine                 5.0.0
wcwidth              0.2.5
wheel                0.35.1
wrapt                1.12.1
xlwt                 1.3.0
zipp                 3.3.1

Não tenho certeza se isso vai acabar sendo relevante, mas vale a pena notar que eu _pré-pip install_ deprecation six toolz , o que significa que eu realmente faço:

pip install deprecation six toolz ${PIP_OPTS}
# some more pip installation using the new resolver
pip install -e .[test] ${PIP_OPTS}

Obrigado por compartilhar isso. No entanto, essas informações ainda não são suficientes para reproduzir o problema. :(

Basicamente, eu precisaria de todo o mapeamento de (package-name, version): [dependencies] que o pip vê durante o processo de resolução para poder depurar isso e, obviamente, não posso pesquisar as dependências de seus pacotes internos. ;)

Então, algumas perguntas relacionadas:

  • você poderia criar um reprodutor mínimo para isso, para que possamos tentar isso sem precisar acessar os pacotes internos? :)

    • caso contrário, seria possível fornecer algo como o mapeamento que mencionei acima, para os pacotes que o pip analisa durante o processo de resolução?

  • esse erro ocorre mesmo ao instalar como . vez de .[test] (ou seja, sem o extra de teste)?

Eu basicamente precisaria recriar / ver qual é o estado interno do resolvedor, quando ele travar, o que não imprimimos / registramos em nenhum lugar por uma série de razões.

Ok, então estou tentando reproduzir o problema localmente, sem sucesso.

Tentei reproduzir isso em nosso CI em outro branch e novamente não falhou.

Então eu voltei para o branch original que estava com problemas hoje cedo e voltei para 20.2.4 e ele conseguiu resolver as dependências desta vez ...

Isso pode ser um problema com o cache ou algo assim?

Nosso CI funciona com corredores K8s, então duvido que seja esse o caso.

Devo fechar e reabrir se isso acontecer novamente?

Isso pode ser um problema com o cache ou algo assim?

pip não armazena nada em cache durante a resolução de dependência - apenas E / S de rede. Eu não acho que poderia ser isso.

Devo fechar e reabrir se isso acontecer novamente?

Certo! Isso funciona para mim. Se você puder criar um reprodutor, seria incrível!

Ei, também estou vendo um problema semelhante que de repente começou há um dia.

No pip 20.2.4, posso reproduzir isso apenas com

pip install --use-feature=2020-resolver "google-api-core>1.18.0,<1.21.0" "google-cloud-monitoring>=2.0.0"

O comportamento parece um pouco não determinístico, mas a cada vez ele começará a baixar muitas versões (possivelmente _cada_ versão!) De uma dependência e ficará preso em um loop Requirement already satisfied ou apenas parecerá congelar completamente. Este é um exemplo resumido, mas tivemos um build de CI travando por 6 horas antes de ser encerrado.

Observe que as duas libs que estou tentando instalar realmente causam um conflito de versão e se eu descartar o --use-feature=2020-resolver , recebo uma mensagem de erro normal:

google-cloud-monitoring 2.0.0 requires google-api-core[grpc]<2.0.0dev,>=1.22.2, but you'll have google-api-core 1.20.1 which is incompatible.

também se eu descer para o pip 20.2.3 (e usar o 2020-resolver ), também recebo rapidamente um erro de conflito de dependência.

Se eu alterar o requisito acima para google-cloud-monitoring<2.0.0 , ele funcionará bem, com e sem o 2020-resolver

Espero que isto ajude

Eu também encontrei isso - executei o novo resolvedor em um arquivo requirements.txt existente (bem grande) e ele acabou executando um loop infinito de Requirement already satisfied .

Aqui estão minhas etapas para reproduzir: https://gist.github.com/simonw/c53ad97ac2cd495e741b52f88d22b45d

Versão mais curta: executei pip install --use-feature=2020-resolver -r requirements.txt neste arquivo: https://gist.githubusercontent.com/simonw/c53ad97ac2cd495e741b52f88d22b45d/raw/e09640304fcdf1990844f8ff8ecc92ef654d21b7/requirements.txt

Correr sem a bandeira --use-feature= me dá o seguinte:

ERROR: After October 2020 you may experience errors when installing or updating packages. This is because pip will change the way that it resolves dependency conflicts.

We recommend you use --use-feature=2020-resolver to test your packages with the new resolver before it becomes the default.

pocket-to-sqlite 0.2 requires sqlite-utils~=2.4.4, but you'll have sqlite-utils 2.22 which is incompatible.
healthkit-to-sqlite 0.5 requires sqlite-utils~=2.4.4, but you'll have sqlite-utils 2.22 which is incompatible.

Embora estranhamente o problema do loop infinito não mencionasse esses pacotes - era assim:

Collecting twitter-to-sqlite~=0.20
  Using cached twitter_to_sqlite-0.20-py3-none-any.whl (25 kB)
Requirement already satisfied: click~=7.1.1 in /Users/simon/.local/share/virtualenvs/pipnext-HNJm0oR8/lib/python3.8/site-packages (from datasette>=0.50.2->-r requirements.txt (line 2)) (7.1.2)
Requirement already satisfied: click~=7.1.1 in /Users/simon/.local/share/virtualenvs/pipnext-HNJm0oR8/lib/python3.8/site-packages (from datasette>=0.50.2->-r requirements.txt (line 2)) (7.1.2)
...

Resolvi meu problema trocando todos os meus requisitos de ~= por >= .

Portanto, acho que há um bug aqui, mas é um bug da interface do usuário: os requisitos de loop infinito parecem ter sido acionados pelo conflito de dependência mostrado no aviso, mas o próprio erro (loop infinito sobre Requirement already satisfied para alguns pacote não relacionado) foi realmente confuso.

Por conversa em uma reunião esta semana , @pradyunsg precisa investigar isso - a ajuda de outras pessoas também seria bem-vinda ( @pfmoore e @uranusjr no caso de você ter um momento para ajudar).

@pradyunsg isso é algo que você poderia cutucar na terça-feira?

É improvável que tenha largura de banda no curto prazo, mas posso dar uma olhada quando tiver tempo livre.

Usando o branch master atual, todos os reprodutores estão falhando basicamente imediatamente. Eu os executei em um virtualenv limpo em uma VM Ubuntu, com o branch master do pip instalado em modo editável com ferramentas de configuração 41.2.0.

@DanSimon 's https://github.com/pypa/pip/issues/9011#issuecomment -712280236:

$ pip install --use-feature=2020-resolver "google-api-core>1.18.0,<1.21.0" "google-cloud-monitoring>=2.0.0"
Collecting google-cloud-monitoring>=2.0.0
  Using cached google_cloud_monitoring-2.0.0-py2.py3-none-any.whl (287 kB)
Collecting google-api-core<1.21.0,>1.18.0
  Using cached google_api_core-1.20.1-py2.py3-none-any.whl (90 kB)
Requirement already satisfied: setuptools>=34.0.0 in ./pythonenv3.8/lib/python3.8/site-packages (from google-api-core<1.21.0,>1.18.0) (41.2.0)
Collecting google-api-core[grpc]<2.0.0dev,>=1.22.2
  Using cached google_api_core-1.23.0-py2.py3-none-any.whl (91 kB)
  Using cached google_api_core-1.22.4-py2.py3-none-any.whl (91 kB)
  Using cached google_api_core-1.22.3-py2.py3-none-any.whl (91 kB)
  Using cached google_api_core-1.22.2-py2.py3-none-any.whl (91 kB)
Collecting google-api-core<1.21.0,>1.18.0
  Downloading google_api_core-1.19.1-py2.py3-none-any.whl (90 kB)
     |████████████████████████████████| 90 kB 4.4 MB/s 
Requirement already satisfied: setuptools>=34.0.0 in ./pythonenv3.8/lib/python3.8/site-packages (from google-api-core<1.21.0,>1.18.0) (41.2.0)
  Downloading google_api_core-1.19.0-py2.py3-none-any.whl (90 kB)
     |████████████████████████████████| 90 kB 4.7 MB/s 
Requirement already satisfied: setuptools>=34.0.0 in ./pythonenv3.8/lib/python3.8/site-packages (from google-api-core<1.21.0,>1.18.0) (41.2.0)
  Downloading google_api_core-1.20.0-py2.py3-none-any.whl (90 kB)
     |████████████████████████████████| 90 kB 5.9 MB/s 
Requirement already satisfied: setuptools>=34.0.0 in ./pythonenv3.8/lib/python3.8/site-packages (from google-api-core<1.21.0,>1.18.0) (41.2.0)
ERROR: Cannot install google-api-core<1.21.0 and >1.18.0, google-api-core[grpc] 1.23.0, google-api-core<1.21.0 and >1.18.0, google-api-core[grpc] 1.22.4, google-api-core<1.21.0 and >1.18.0, google-api-core[grpc] 1.22.3, google-api-core<1.21.0 and >1.18.0 and google-api-core[grpc] 1.22.2 because these package versions have conflicting dependencies.

The conflict is caused by:
    The user requested google-api-core<1.21.0 and >1.18.0
    google-api-core[grpc] 1.23.0 depends on google-api-core 1.23.0 (from https://files.pythonhosted.org/packages/2e/3d/d7af13040ab5b259994a4434ff03d68084a994e709bc8afa4bee1235310e/google_api_core-1.23.0-py2.py3-none-any.whl#sha256=94d8c707d358d8d9e8b0045c42be20efb58433d308bd92cf748511c7825569c8 (from https://pypi.org/simple/google-api-core/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*))
    The user requested google-api-core<1.21.0 and >1.18.0
    google-api-core[grpc] 1.22.4 depends on google-api-core 1.22.4 (from https://files.pythonhosted.org/packages/9f/52/e7720d652aeb7d514d3a2e62d263c8058f465beee2fc41260591c0fecc3a/google_api_core-1.22.4-py2.py3-none-any.whl#sha256=15e00ceb7e6dc44159e2a41a222830744e9ebcb3a553c580b61cb5a66572f2f0 (from https://pypi.org/simple/google-api-core/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*))
    The user requested google-api-core<1.21.0 and >1.18.0
    google-api-core[grpc] 1.22.3 depends on google-api-core 1.22.3 (from https://files.pythonhosted.org/packages/eb/b0/ea7b8a2c136095c5be2f14210b31b214cb74c1eb8fee09a01ad0423a2a95/google_api_core-1.22.3-py2.py3-none-any.whl#sha256=6a95bfcf6f661ec0dffd96013b47100765f4f88ce54412562176bfcb11a997c1 (from https://pypi.org/simple/google-api-core/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*))
    The user requested google-api-core<1.21.0 and >1.18.0
    google-api-core[grpc] 1.22.2 depends on google-api-core 1.22.2 (from https://files.pythonhosted.org/packages/3c/45/a5707ce2cbd6681c09e69a0ce10d9bebe98e0231c458a4dc652670f3584f/google_api_core-1.22.2-py2.py3-none-any.whl#sha256=67e33a852dcca7cb7eff49abc35c8cc2c0bb8ab11397dc8306d911505cae2990 (from https://pypi.org/simple/google-api-core/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*))

To fix this you could try to:
1. loosen the range of package versions you've specified
2. remove package versions to allow pip attempt to solve the dependency conflict

ERROR: ResolutionImpossible: for help visit https://pip.pypa.io/en/latest/user_guide/#fixing-conflicting-dependencies

@simonw 's https://github.com/pypa/pip/issues/9011#issuecomment -714025122:

$ pip install --use-feature=2020-resolver -r requirements.txt
Collecting https://github.com/simonw/goodreads-to-sqlite/archive/f3d5cd1692e8b5f830416512c6778079e500917a.zip (from -r requirements.txt (line 38))
  Downloading https://github.com/simonw/goodreads-to-sqlite/archive/f3d5cd1692e8b5f830416512c6778079e500917a.zip
     | 364 kB 16.8 MB/s
Collecting datasette>=0.50.2
  Downloading datasette-0.50.2-py3-none-any.whl (205 kB)
     |████████████████████████████████| 205 kB 10.8 MB/s 
Collecting datasette-haversine
  Downloading datasette_haversine-0.1-py3-none-any.whl (6.5 kB)
Collecting datasette-render-markdown>=1.1.2
  Downloading datasette_render_markdown-1.1.2-py3-none-any.whl (8.7 kB)
Collecting datasette-show-errors
  Downloading datasette_show_errors-0.2-py3-none-any.whl (6.3 kB)
Collecting datasette-write
  Downloading datasette_write-0.1-py3-none-any.whl (3.6 kB)
Collecting datasette-init
  Downloading datasette_init-0.2-py3-none-any.whl (2.9 kB)
Collecting dogsheep-beta>=0.9
  Downloading dogsheep_beta-0.9-py3-none-any.whl (10 kB)
Collecting yaml-to-sqlite~=0.3
  Downloading yaml_to_sqlite-0.3-py3-none-any.whl (7.5 kB)
Collecting healthkit-to-sqlite~=0.5
  Downloading healthkit_to_sqlite-0.5-py3-none-any.whl (9.3 kB)
ERROR: Cannot install sqlite-utils>=2.17, -r requirements.txt (line 25), -r requirements.txt (line 28), -r requirements.txt (line 38), -r requirements.txt (line 39) and -r requirements.txt (line 40) because these package versions have conflicting dependencies.

The conflict is caused by:
    The user requested sqlite-utils>=2.17
    datasette-init 0.2 depends on sqlite-utils
    dogsheep-beta 0.9 depends on sqlite-utils
    goodreads-to-sqlite 0.4 depends on sqlite-utils>=2.9
    yaml-to-sqlite 0.3 depends on sqlite-utils
    healthkit-to-sqlite 0.5 depends on sqlite-utils~=2.4.4

To fix this you could try to:
1. loosen the range of package versions you've specified
2. remove package versions to allow pip attempt to solve the dependency conflict

ERROR: ResolutionImpossible: for help visit https://pip.pypa.io/en/latest/user_guide/#fixing-conflicting-dependencies

Tentei usar o branch master mais recente, mas não estou vendo nenhuma diferença, o pip ainda trava quando tento executar o comando que postei originalmente. Talvez eu não esteja fazendo algo certo, mas tentei fazer isso na imagem padrão do docker python:3.7 e nativamente em macos em um virtualenv novo:

$ docker run --entrypoint=bash -it python:3.7
...
root<strong i="7">@24eb69007fc3</strong>:/# git clone https://github.com/pypa/pip.git
Cloning into 'pip'...
...

root<strong i="8">@24eb69007fc3</strong>:/# cd pip/
root<strong i="9">@24eb69007fc3</strong>:/pip# pip install -e .
...
Successfully installed pip

root<strong i="10">@24eb69007fc3</strong>:/pip# git branch -v
* master 00e531a16 Merge pull request #9017 from pradyunsg/backtracking-messaging

root<strong i="11">@24eb69007fc3</strong>:/pip# pip list
Package    Version   Location
---------- --------- --------
pip        20.3.dev0 /pip/src
setuptools 50.3.2
wheel      0.35.1

root<strong i="12">@24eb69007fc3</strong>:/pip# pip install --use-feature=2020-resolver "google-api-core>1.18.0,<1.21.0" "google-cloud-monitoring>=2.0.0"
Collecting google-api-core<1.21.0,>1.18.0
  Using cached google_api_core-1.20.1-py2.py3-none-any.whl (90 kB)
Requirement already satisfied: setuptools>=34.0.0 in /usr/local/lib/python3.7/site-packages (from google-api-core<1.21.0,>1.18.0) (50.3.2)
Collecting google-cloud-monitoring>=2.0.0
  Using cached google_cloud_monitoring-2.0.0-py2.py3-none-any.whl (287 kB)
Collecting pytz
  Using cached pytz-2020.1-py2.py3-none-any.whl (510 kB)
Collecting googleapis-common-protos<2.0dev,>=1.6.0
  Using cached googleapis_common_protos-1.52.0-py2.py3-none-any.whl (100 kB)
Collecting requests<3.0.0dev,>=2.18.0
  Using cached requests-2.24.0-py2.py3-none-any.whl (61 kB)
Collecting protobuf>=3.12.0
  Using cached protobuf-3.13.0-cp37-cp37m-manylinux1_x86_64.whl (1.3 MB)
Requirement already satisfied: setuptools>=34.0.0 in /usr/local/lib/python3.7/site-packages (from google-api-core<1.21.0,>1.18.0) (50.3.2)
Collecting six>=1.10.0
  Using cached six-1.15.0-py2.py3-none-any.whl (10 kB)
Collecting google-auth<2.0dev,>=1.14.0
  Using cached google_auth-1.22.1-py2.py3-none-any.whl (114 kB)
Requirement already satisfied: setuptools>=34.0.0 in /usr/local/lib/python3.7/site-packages (from google-api-core<1.21.0,>1.18.0) (50.3.2)
Collecting proto-plus>=1.4.0
  Using cached proto-plus-1.11.0.tar.gz (44 kB)
Collecting libcst>=0.2.5
  Using cached libcst-0.3.13-py3-none-any.whl (502 kB)
Collecting google-api-core[grpc]<2.0.0dev,>=1.22.2
  Using cached google_api_core-1.23.0-py2.py3-none-any.whl (91 kB)
  Using cached google_api_core-1.22.4-py2.py3-none-any.whl (91 kB)
  Using cached google_api_core-1.22.3-py2.py3-none-any.whl (91 kB)
  Using cached google_api_core-1.22.2-py2.py3-none-any.whl (91 kB)
INFO: pip is looking at multiple versions of this package to determine which version is compatible with other requirements. This could take a while.
Collecting libcst>=0.2.5
  Using cached libcst-0.3.12-py3-none-any.whl (501 kB)
  Using cached libcst-0.3.11-py3-none-any.whl (501 kB)
  Using cached libcst-0.3.10-py3-none-any.whl (498 kB)
  Using cached libcst-0.3.9-py3-none-any.whl (496 kB)
  Using cached libcst-0.3.8-py3-none-any.whl (488 kB)
  Using cached libcst-0.3.7-py3-none-any.whl (487 kB)
  Using cached libcst-0.3.6-py3-none-any.whl (481 kB)
INFO: pip is looking at multiple versions of this package to determine which version is compatible with other requirements. This could take a while.
  Using cached libcst-0.3.5-py3-none-any.whl (479 kB)
  Using cached libcst-0.3.4-py3-none-any.whl (476 kB)
  Using cached libcst-0.3.3-py3-none-any.whl (465 kB)
  Using cached libcst-0.3.2-py3-none-any.whl (460 kB)
  Using cached libcst-0.3.1-py3-none-any.whl (445 kB)
INFO: This is taking longer than usual. You might need to provide the dependency resolver with stricter constraints to reduce runtime.If you want to abort this run, you can press Ctrl + C to do so.To improve how pip performs, tell us what happened here: https://pip.pypa.io/surveys/backtracking
  Using cached libcst-0.3.0-py3-none-any.whl (433 kB)
  Using cached libcst-0.2.7-py3-none-any.whl (431 kB)
  Using cached libcst-0.2.6-py3-none-any.whl (430 kB)
  Using cached libcst-0.2.5-py3-none-any.whl (368 kB)
INFO: pip is looking at multiple versions of this package to determine which version is compatible with other requirements. This could take a while.
INFO: pip is looking at multiple versions of this package to determine which version is compatible with other requirements. This could take a while.
INFO: This is taking longer than usual. You might need to provide the dependency resolver with stricter constraints to reduce runtime.If you want to abort this run, you can press Ctrl + C to do so.To improve how pip performs, tell us what happened here: https://pip.pypa.io/surveys/backtracking

e então fica preso. Deixei descansar por cerca de 30 minutos antes de cancelar.

Além disso, parece que isso não está limitado a apenas 20.2.4. Consegui causar o mesmo problema de loop infinito em outras versões do 20.2 (cada versão que tem o sinalizador 2020-resolver ) com o seguinte comando (um pouco diferente do que postei acima):

pip install --use-feature=2020-resolver "apache-beam[gcp]==2.25.0" google-api-core==1.20.1

Obrigado @DanSimon! Consigo reproduzir com o exemplo apache-beam[gcp] (com um pequeno patch para melhorar o registro das ações do resolvedor):

$ pip install --use-feature=2020-resolver "apache-beam[gcp]==2.25.0" google-api-core==1.20.1
Collecting apache-beam[gcp]==2.25.0
  Using cached apache_beam-2.25.0-cp38-cp38-manylinux2010_x86_64.whl (10.3 MB)
Collecting google-api-core==1.20.1
  Using cached google_api_core-1.20.1-py2.py3-none-any.whl (90 kB)
Requirement already satisfied: setuptools>=34.0.0 in ./pythonenv3.8/lib/python3.8/site-packages (from google-api-core==1.20.1) (41.2.0)
Collecting numpy<2,>=1.14.3
  Using cached numpy-1.19.2-cp38-cp38-manylinux2010_x86_64.whl (14.5 MB)
Collecting future<1.0.0,>=0.18.2
  Using cached future-0.18.2.tar.gz (829 kB)
Collecting pymongo<4.0.0,>=3.8.0
  Using cached pymongo-3.11.0-cp38-cp38-manylinux2014_x86_64.whl (530 kB)
Collecting protobuf<4,>=3.12.2
  Using cached protobuf-3.13.0-cp38-cp38-manylinux1_x86_64.whl (1.3 MB)
Requirement already satisfied: setuptools>=34.0.0 in ./pythonenv3.8/lib/python3.8/site-packages (from google-api-core==1.20.1) (41.2.0)
Collecting pydot<2,>=1.2.0
  Using cached pydot-1.4.1-py2.py3-none-any.whl (19 kB)
Collecting python-dateutil<3,>=2.8.0
  Using cached python_dateutil-2.8.1-py2.py3-none-any.whl (227 kB)
Collecting typing-extensions<3.8.0,>=3.7.0
  Using cached typing_extensions-3.7.4.3-py3-none-any.whl (22 kB)
Collecting pyarrow<0.18.0,>=0.15.1
  Using cached pyarrow-0.17.1-cp38-cp38-manylinux2014_x86_64.whl (63.8 MB)
Collecting httplib2<0.18.0,>=0.8
  Using cached httplib2-0.17.4-py3-none-any.whl (95 kB)
Collecting crcmod<2.0,>=1.7
  Using cached crcmod-1.7.tar.gz (89 kB)
Collecting mock<3.0.0,>=1.0.1
  Using cached mock-2.0.0-py2.py3-none-any.whl (56 kB)
Collecting hdfs<3.0.0,>=2.1.0
  Using cached hdfs-2.5.8.tar.gz (41 kB)
Collecting requests<3.0.0,>=2.24.0
  Using cached requests-2.24.0-py2.py3-none-any.whl (61 kB)
Collecting grpcio<2,>=1.29.0
  Using cached grpcio-1.33.2-cp38-cp38-manylinux2014_x86_64.whl (3.8 MB)
Collecting avro-python3!=1.9.2,<1.10.0,>=1.8.1
  Using cached avro-python3-1.9.2.1.tar.gz (37 kB)
Collecting dill<0.3.2,>=0.3.1.1
  Using cached dill-0.3.1.1.tar.gz (151 kB)
Collecting fastavro<2,>=0.21.4
  Using cached fastavro-1.0.0.post1-cp38-cp38-manylinux2014_x86_64.whl (1.7 MB)
Collecting pytz>=2018.3
  Using cached pytz-2020.1-py2.py3-none-any.whl (510 kB)
Collecting oauth2client<5,>=2.0.1
  Using cached oauth2client-4.1.3-py2.py3-none-any.whl (98 kB)
Collecting google-cloud-build<3,>=2.0.0
  Using cached google_cloud_build-2.0.0-py2.py3-none-any.whl (67 kB)
Collecting google-auth<2,>=1.18.0
  Using cached google_auth-1.22.1-py2.py3-none-any.whl (114 kB)
Requirement already satisfied: setuptools>=34.0.0 in ./pythonenv3.8/lib/python3.8/site-packages (from google-api-core==1.20.1) (41.2.0)
Collecting google-apitools<0.5.32,>=0.5.31
  Using cached google-apitools-0.5.31.tar.gz (173 kB)
Collecting google-cloud-spanner<2,>=1.13.0
  Using cached google_cloud_spanner-1.19.1-py2.py3-none-any.whl (255 kB)
Collecting google-cloud-dlp<2,>=0.12.0
  Using cached google_cloud_dlp-1.0.0-py2.py3-none-any.whl (169 kB)
Collecting grpcio-gcp<1,>=0.2.2
  Using cached grpcio_gcp-0.2.2-py2.py3-none-any.whl (9.4 kB)
Collecting google-cloud-language<2,>=1.3.0
  Using cached google_cloud_language-1.3.0-py2.py3-none-any.whl (83 kB)
Collecting google-cloud-core<2,>=0.28.1
  Using cached google_cloud_core-1.4.3-py2.py3-none-any.whl (27 kB)
Collecting google-cloud-videointelligence<2,>=1.8.0
  Using cached google_cloud_videointelligence-1.16.0-py2.py3-none-any.whl (183 kB)
Collecting google-cloud-datastore<2,>=1.7.1
  Using cached google_cloud_datastore-1.15.3-py2.py3-none-any.whl (134 kB)
Collecting cachetools<5,>=3.1.0
  Using cached cachetools-4.1.1-py3-none-any.whl (10 kB)
Collecting google-cloud-pubsub<2,>=0.39.0
  Using cached google_cloud_pubsub-1.7.0-py2.py3-none-any.whl (144 kB)
Collecting google-cloud-bigquery<2,>=1.6.0
  Using cached google_cloud_bigquery-1.28.0-py2.py3-none-any.whl (187 kB)
  Using cached google_cloud_bigquery-1.27.2-py2.py3-none-any.whl (172 kB)
  Using cached google_cloud_bigquery-1.26.1-py2.py3-none-any.whl (170 kB)
  Using cached google_cloud_bigquery-1.26.0-py2.py3-none-any.whl (170 kB)
  Using cached google_cloud_bigquery-1.25.0-py2.py3-none-any.whl (169 kB)
Collecting google-cloud-vision<2,>=0.38.0
  Using cached google_cloud_vision-1.0.0-py2.py3-none-any.whl (435 kB)
Collecting google-cloud-bigtable<2,>=0.31.1
  Using cached google_cloud_bigtable-1.5.1-py2.py3-none-any.whl (266 kB)
Collecting six>=1.10.0
  Using cached six-1.15.0-py2.py3-none-any.whl (10 kB)
Collecting googleapis-common-protos<2.0dev,>=1.6.0
  Using cached googleapis_common_protos-1.52.0-py2.py3-none-any.whl (100 kB)
Collecting pyparsing>=2.1.4
  Using cached pyparsing-2.4.7-py2.py3-none-any.whl (67 kB)
Collecting pbr>=0.11
  Using cached pbr-5.5.1-py2.py3-none-any.whl (106 kB)
Collecting docopt
  Using cached docopt-0.6.2.tar.gz (25 kB)
Collecting certifi>=2017.4.17
  Using cached certifi-2020.6.20-py2.py3-none-any.whl (156 kB)
Collecting chardet<4,>=3.0.2
  Using cached chardet-3.0.4-py2.py3-none-any.whl (133 kB)
Collecting urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1
  Using cached urllib3-1.25.11-py2.py3-none-any.whl (127 kB)
Collecting idna<3,>=2.5
  Using cached idna-2.10-py2.py3-none-any.whl (58 kB)
Collecting pyasn1-modules>=0.0.5
  Using cached pyasn1_modules-0.2.8-py2.py3-none-any.whl (155 kB)
Collecting rsa>=3.1.4
  Using cached rsa-4.6-py3-none-any.whl (47 kB)
Collecting pyasn1>=0.1.7
  Using cached pyasn1-0.4.8-py2.py3-none-any.whl (77 kB)
Collecting google-api-core[grpc]<2.0.0dev,>=1.22.0
  Using cached google_api_core-1.23.0-py2.py3-none-any.whl (91 kB)
  Using cached google_api_core-1.22.4-py2.py3-none-any.whl (91 kB)
  Using cached google_api_core-1.22.3-py2.py3-none-any.whl (91 kB)
  Using cached google_api_core-1.22.2-py2.py3-none-any.whl (91 kB)
  Using cached google_api_core-1.22.1-py2.py3-none-any.whl (91 kB)
  Using cached google_api_core-1.22.0-py2.py3-none-any.whl (91 kB)
Backtracking pyasn1 0.4.8 LinkCandidate
INFO: pip is looking at multiple versions of this package to determine which version is compatible with other requirements. This could take a while.
Collecting pyasn1>=0.1.7
  Downloading pyasn1-0.4.7-py2.py3-none-any.whl (76 kB)
     |████████████████████████████████| 76 kB 2.7 MB/s 
Backtracking pyasn1 0.4.7 LinkCandidate
  Downloading pyasn1-0.4.6-py2.py3-none-any.whl (75 kB)
     |████████████████████████████████| 75 kB 2.5 MB/s 
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
INFO: pip is looking at multiple versions of this package to determine which version is compatible with other requirements. This could take a while.
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
INFO: pip is looking at multiple versions of this package to determine which version is compatible with other requirements. This could take a while.
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
INFO: This is taking longer than usual. You might need to provide the dependency resolver with stricter constraints to reduce runtime.If you want to abort this run, you can press Ctrl + C to do so.To improve how pip performs, tell us what happened here: https://pip.pypa.io/surveys/backtracking
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
INFO: pip is looking at multiple versions of this package to determine which version is compatible with other requirements. This could take a while.
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
INFO: This is taking longer than usual. You might need to provide the dependency resolver with stricter constraints to reduce runtime.If you want to abort this run, you can press Ctrl + C to do so.To improve how pip performs, tell us what happened here: https://pip.pypa.io/surveys/backtracking
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate

Acho que identifiquei o problema. Correção enviada em sarugaku / resolvelib # 60, onde também descrevi meu entendimento sobre o problema.

@uranusjr Acho que tenho uma maneira interna de reproduzir esse problema.

Como posso testar seu PR? Não tenho certeza de como resolvelib integra a pip ...

@romaingz Estou trabalhando em um PR para enviar as mudanças para as pessoas testarem.

Eu empurrei um pip remendado no meu garfo Você pode testar com

python -m pip install -U https://github.com/uranusjr/pip/archive/resolvelib-dev.zip

Posso gerar esta mensagem de erro a partir do exemplo apache-beam[gcp] + google-api-core :

ERROR: Cannot install apache-beam, apache-beam, apache-beam, apache-beam, apache-beam, apache-beam,
apache-beam, apache-beam, apache-beam, apache-beam, apache-beam, apache-beam, google-api-core==1.20.1,
google-api-core==1.20.1, google-api-core==1.20.1, google-api-core==1.20.1, google-api-core==1.20.1,
google-api-core==1.20.1, google-api-core[grpc] 1.22.0, google-api-core[grpc] 1.22.1,
google-api-core[grpc] 1.22.2, google-api-core[grpc] 1.22.3, google-api-core[grpc] 1.22.4 and
google-api-core[grpc] 1.23.0 because these package versions have conflicting dependencies.
ERROR: ResolutionImpossible: for help visit https://pip.pypa.io/en/latest/user_guide/#fixing-conflicting-dependencies

(Veja # 8495 para discussões sobre como melhorar a mensagem, vamos deixar isso por enquanto.)

No entanto, descobri que a mensagem de erro não é consistente, porque a ordem em que o resolvedor tenta os requisitos não é determinística. E não consigo gerar uma resolução infinita se adicionar uma ordem determinística (e remover a correção) 😞

Então o que estava falhando o dia todo ontem parou de falhar hoje (sem o patch de @uranusjr ).

Existe uma semente que eu poderia recuperar de uma tentativa fracassada e reutilizar em outras tentativas para manter resultados consistentes?

Existe uma semente que eu poderia recuperar de uma tentativa fracassada e reutilizar em outras tentativas para manter resultados consistentes?

Acho que não - é provavelmente dependente da randomização de hash que o Python faz (uma vez que a lógica da ordem de classificação estava fornecendo vários itens com a mesma chave, e isso foi corrigido no # 9100).

Esse problema me incomodou hoje no projeto do cheroot. Eu verifiquei cherrypy / cheroot @ 5de9b053 , configurei PIP_USE_FEATURE=2020-resolver e executei tox e parecia travar. Eu cancelei, limpei e reiniciei com tox -vvv e pude ver mensagens zumbindo sobre a instalação de pytest e cobertura (entre outras coisas). Limpando o sinalizador de recurso e os testes são executados conforme o esperado. A versão pip que o tox instala é 20.2.3 (embora 20.2.4 esteja disponível). Ainda não tive a chance de investigar mais.

Em https://github.com/cherrypy/cheroot/tree/pypa-9011 , cometi dois commits, um que replica o problema e outro que aplica a correção proposta. Parece que depois de aplicar a correção proposta, o código não trava mais, mas agora detecta um conflito. Isso me indica que a correção de fato resolve o problema.

Hmm. Talvez eu tenha falado muito cedo. Estou percebendo que algumas das compilações desse branch falharam rapidamente (~ 90), mas outras compilações continuam a funcionar (~ 20m). Em minha estação de trabalho local, algumas execuções param enquanto outras são concluídas.

Você provavelmente também é afetado pelo problema indeterminísico (corrigido em # 9100). Você pode tentar se consegue reproduzir o problema de travamento com o mestre (que acredito que deve falhar ou ter sucesso de forma consistente)?

Confirmado - a execução sob pip master faz com que os testes travem de forma confiável .

Obrigado! Consegui limitar o conjunto de requisitos problemáticos para

pytest-mock>=1.11.0
pytest-sugar>=0.9.3
pytest-testmon<1.0.0
coverage==5.3

Remover qualquer um desses e o resolvedor seria capaz de produzir uma solução. Vou tentar construir um caso de teste e trabalhar a partir dele (espero que durante a semana).


Observação (para mim mesmo): Minha hipótese atual é que esse problema pode ser acionado se o resolvedor detectar mais de um conflito não relacionado. Ele veria um, voltaria para aquele, veria o outro, voltaria para aquele, e acertaria o primeiro novamente.

Vale a pena mencionar que acho que esses bugs podem ter algo a ver com extras e mencionar pré-lançamentos nos requisitos. Foi isso que aconteceu no meu caso, quando terminei com um loop infinito entre um pacote e um plugin de pacote. Consegui contornar o problema evitando os pré-lançamentos, o que também é recomendado, mas lamento ter encontrado esse bug pelo menos 3 vezes nos últimos 3 meses e apenas uma vez ... no meu jardim.

O pessoal aqui pode estar interessado nesta atualização .

Este é agora um dos dois principais bloqueios para o lançamento do pip 20.3, apenas para sua informação.

Atualização: Uma correção para isso foi montada. pip 20.3 (que deve incluir a correção) provavelmente acontecerá em breve, mas eu atualizei meu fork ( mencionado neste comentário ) para incluí-lo. Sinta-se à vontade para experimentar e relatar se realmente resolve o problema!

Este patch "resolvelib-dev" proposto resolve meu próprio caso de resolução infinita https://github.com/pypa/pip/issues/9112#issuecomment -735222069

Estou recebendo um loop infinito ao tentar instalar o seguinte requirements.txt com pip==20.3 em um novo venv, python versão 3.8.5 no Mac:

tensorboard==2.2.2
torch==1.7.0
tqdm>=4.54

nltk==3.5.0
transformers==3.5.0
tokenizers==0.9.4
jsonlines>=1.2
sacrebleu>=1.4

pytest>=6.1
pytest-cov>=2.10
codecov>=2.1
flake8>=3.8
black==20.8b1

A instalação eventualmente fica travada em um loop, com a seguinte saída repetida:

Requirement already satisfied: typing-extensions>=3.7.4 in ./testenv/lib/python3.8/site-packages (from black==20.8b1->-r requirements.txt (line 15)) (3.7.4.3)
Requirement already satisfied: regex>=2020.1.8 in ./testenv/lib/python3.8/site-packages (from black==20.8b1->-r requirements.txt (line 15)) (2020.11.13)
Requirement already satisfied: setuptools>=41.0.0 in ./testenv/lib/python3.8/site-packages (from tensorboard==2.2.2->-r requirements.txt (line 1)) (44.0.0)

Saída de 20.2.4 com --use-feature=2020-resolver habilitado:

ERROR: Cannot install tokenizers==0.9.4 and transformers 3.5.0 because these package versions have conflicting dependencies.

.. mas a instalação termina.

Editar: consertando o conflito exigindo transformers==4.0.0 instalações OK.

Reabrindo.

Correndo para isso também.

Aqui está o arquivo de requisitos que o reproduz para mim usando o pip 20.3
pip --version pip 20.3 from /home/elijah/venvs/pipresolve/lib64/python3.8/site-packages/pip (python 3.8)

boto
boto3
botocore
cryptography
elasticsearch
gcloud
google-api-python-client
junit-xml
junit2html
junitparser
kubernetes>=8.0.0,<9.0.0
openshift==0.8.9

Com 20.2.4, a instalação apresenta o erro:
openshift 0.8.9 requires urllib3<1.25, but you'll have urllib3 1.26.2 which is incompatible. mas a instalação foi concluída

o caso de @ tomhosking eventualmente me dá

ERROR: Cannot install -r r.txt (line 6) and tokenizers==0.9.4 because these package versions have conflicting dependencies.

The conflict is caused by:
    The user requested tokenizers==0.9.4
    transformers 3.5.0 depends on tokenizers==0.9.3

To fix this you could try to:
1. loosen the range of package versions you've specified
2. remove package versions to allow pip attempt to solve the dependency conflict

ERROR: ResolutionImpossible: for help visit https://pip.pypa.io/en/latest/user_guide/#fixing-conflicting-dependencies

Não terminei o segundo, mas espero que também resulte em um eventual erro a julgar pela saída.

Em ambos os casos, a saída parece travada, uma vez que eles mostravam os mesmos pacotes repetidamente. Mas, quando inspecionado de perto, o resolvedor ocasionalmente cuspia coisas diferentes, indicando progresso.

exemplo @ tomhosking:

  Downloading codecov-2.1.5-py2.py3-none-any.whl (16 kB)
(a ton of setuptools and wheel lines)
  Downloading codecov-2.1.4-py2.py3-none-any.whl (16 kB)
(a ton of setuptools and wheel lines)
  Downloading codecov-2.1.3.tar.gz (18 kB)
(goes on and on)

exemplo de @kdelee:

  Using cached junit-xml-1.8.tar.gz (10.0 kB)
(a ton of setuptools lines)
  Using cached junit-xml-1.7.tar.gz (9.1 kB)
(a ton of setuptools lines)
  Downloading junit-xml-1.6.tar.gz (9.1 kB)
(...)

Portanto, não acho que haja um erro lógico no resolvedor, apenas que a saída do pip não está fazendo um bom trabalho expressando como está tentando (ligeiramente) coisas diferentes.

exemplo de @kdelee:
Portanto, não acho que haja um erro lógico no resolvedor, apenas que a saída do pip não está fazendo um bom trabalho expressando como está tentando (ligeiramente) coisas diferentes.

Isso é verossímil, portanto, embora possa não ser um caso de recursão "infinita", ele ainda está experimentando finitamente mais do que eu posso esperar (atualmente, tenho um trabalho que está em execução há mais de 3 horas em loop na instalação do pip). e não me diz realmente o que está errado. Parece que https://github.com/pypa/pip/issues/9185 é uma boa ideia

Obrigado por verificar @uranusjr! Um pouco como @kdelee , descobri isso porque um fluxo de trabalho de CI expirou. Alguma maneira de falhar mais rápido ou com menos produção excessiva seria ótimo :)

Os relatórios que chegam neste momento são diferentes do que era originalmente (e do que ele rastreou como um bloqueador de liberação para 20.3).

Vou encerrar em favor de # 9187, pois gostaria de manter os relatórios 20.2.4 vs 20.3 em edições separadas.

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