Pip: Pip 20.2.4 переходит в бесконечное разрешение зависимостей

Созданный на 19 окт. 2020  ·  40Комментарии  ·  Источник: pypa/pip

Здравствуйте,

Мой CI переходит в бесконечное разрешение при попытке установить зависимости проекта для тестирования:

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

Вывод

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)

Последние 4 строки повторяются вечно:

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)

Дополнительная информация

В приведенном выше выводе PIP_OPTS установлено в --use-feature=2020-resolver -i https://artifactory.company.com/api/pypi/pypi/simple .

Мы используем индекс, размещенный на сервере компании, у которого нет проблем с pip==20.2.3 .

!release blocker new resolver bug

Самый полезный комментарий

Благодаря! Мне удалось ограничить набор проблемных требований до

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

Удалив любой из них, распознаватель сможет найти решение. Я попытаюсь создать тестовый пример и работать с ним (надеюсь, в течение недели).


Примечание (для себя): Моя текущая гипотеза заключается в том, что эта проблема может быть вызвана, если решатель обнаруживает более одного несвязанного конфликта. Он увидит один, вернется для этого, увидит другой, вернется для этого и снова попадет в первый.

Все 40 Комментарий

Привет! Благодарим за отправку этого вопроса! Не могли бы вы поделиться требованиями, которые пытается установить pip? Это будет в файле setup.py/pyproject.toml соответствующего проекта.

«Публичные» зависимости:

    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',]},

однако, как видите, у нас есть несколько внутренних библиотек, которые также необходимы.

Вот pip list того, какая версия 20.2.3 устанавливается на случай, если это поможет:

$ 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

Не уверен, что это будет актуально, но, возможно, стоит отметить, что я _pre-pip install_ deprecation six toolz , что означает, что я действительно делаю:

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

Спасибо, что поделились этим. Однако этой информации по-прежнему недостаточно для воспроизведения этой проблемы. :(

Мне в основном понадобится полное отображение (package-name, version): [dependencies] которое pip видит во время процесса разрешения, чтобы иметь возможность отладить это, и я, очевидно, не могу найти зависимости ваших внутренних пакетов. ;)

Итак, пара связанных вопросов:

  • не могли бы вы создать для этого минимальный репродуктор, чтобы мы могли попробовать это, не имея доступа к внутренним пакетам? :)

    • если нет, можно ли было бы предоставить что-то вроде сопоставления, о котором я упоминал выше, для пакетов, которые pip просматривает в процессе разрешения?

  • возникает ли эта ошибка даже при установке как . вместо .[test] (т.е. без дополнительной проверки)?

Мне в основном нужно воссоздать / посмотреть, каково внутреннее состояние решателя, когда он застревает, что мы не распечатываем / не регистрируем нигде по множеству причин.

Хорошо, поэтому я безуспешно пытался воспроизвести проблему локально.

Я попытался воспроизвести это в нашем CI на другой ветке, и снова ничего не вышло.

Поэтому я вернулся к исходной ветке, в которой были проблемы ранее сегодня, и переключился обратно на 20.2.4 и на этот раз мне удалось разрешить зависимости ...

Может ли это быть проблема с кешированием или чем-то еще?

Наш CI работает с бегунами k8s, поэтому я сомневаюсь, что это может быть так.

Должен ли я закрыть это и снова открыть, если это произойдет снова?

Может ли это быть проблема с кешированием или чем-то еще?

pip ничего не кэширует во время разрешения зависимостей - только сетевой ввод-вывод. Не думаю, что это могло быть так.

Должен ли я закрыть это и снова открыть, если это произойдет снова?

Конечно! Это подходит для меня. Если у вас получится создать репродуктор, это будет здорово!

Эй, я тоже вижу похожую проблему, которая внезапно началась день назад.

На пипе 20.2.4 я могу воспроизвести это с помощью всего

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

Поведение кажется немного недетерминированным, но каждый раз он начинает загружать множество версий (возможно, _ каждую_ версию!) Зависимости и либо застревает в цикле Requirement already satisfied либо просто полностью зависает. Это упрощенный пример, но у нас была сборка CI, которая зависала на 6 часов, прежде чем ее убили.

Обратите внимание, что две библиотеки, которые я пытаюсь установить, на самом деле вызывают конфликт версий, и если я отброшу --use-feature=2020-resolver я получаю обычное сообщение об ошибке:

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.

также, если я перехожу к пункту 20.2.3 (и использую 2020-resolver ), я также быстро получаю ошибку конфликта зависимостей.

Если я изменю указанное выше требование на google-cloud-monitoring<2.0.0 тогда оно будет работать нормально, как с 2020-resolver , так и без него.

Надеюсь это поможет

Я просто столкнулся с этим - я запустил новый преобразователь для существующего (довольно большого) файла requirements.txt и он закончился бесконечным циклом Requirement already satisfied .

Вот мои шаги по воспроизведению: https://gist.github.com/simonw/c53ad97ac2cd495e741b52f88d22b45d

Более короткая версия: я запустил pip install --use-feature=2020-resolver -r requirements.txt этого файла: https://gist.githubusercontent.com/simonw/c53ad97ac2cd495e741b52f88d22b45d/raw/e09640304fcdf1990844f8ff8ecc92ef654d21b7/requirements.t

Запуск без флага --use-feature= дает мне следующее:

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.

Хотя, как ни странно, проблема с бесконечным циклом не упоминала эти пакеты - это выглядело так:

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)
...

Я исправил свою проблему, заменив все мои требования ~= требования >= .

Итак, я думаю, что здесь есть ошибка, но это ошибка пользовательского интерфейса: требования к бесконечному циклу, похоже, были вызваны конфликтом зависимостей, показанным в предупреждении, но сама ошибка (бесконечный цикл над Requirement already satisfied для некоторых несвязанный пакет) действительно сбивал с толку.

Согласно беседе на встрече на этой неделе , @pradyunsg необходимо продолжить изучение этого @pfmoore и @uranusjr, если у вас есть время, чтобы помочь).

@pradyunsg - это то, во что ты можешь ткнуть во вторник?

У меня вряд ли будет пропускная способность в краткосрочной перспективе, но я могу посмотреть, когда у меня будет свободное время.

При использовании текущей основной ветки все репродукторы сразу выходят из строя. Я запустил их в чистом virtualenv на виртуальной машине Ubuntu, с установленной основной веткой pip в редактируемом режиме с setuptools 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

Я попытался использовать последнюю основную ветку, но я не вижу никакой разницы, pip все еще зависает, когда я пытаюсь запустить команду, которую я изначально опубликовал. Возможно, я что-то делаю неправильно, но я пробовал это как в стандартном образе python:3.7 docker, так и изначально на macos в новом virtualenv:

$ 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

а потом застревает. Я оставил его на 30 минут, прежде чем отменить.

Кроме того, похоже, это не ограничивается только 20.2.4. Мне удалось вызвать ту же проблему с бесконечным циклом в других версиях 20.2 (каждый выпуск с флагом 2020-resolver ) с помощью следующей команды (немного отличной от той, которую я опубликовал выше):

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

Спасибо, @DanSimon! Я могу воспроизвести с помощью примера apache-beam[gcp] (с небольшим патчем для улучшения ведения журнала действий решателя):

$ 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

Думаю, я определил проблему. Исправление представлено в sarugaku / resolvelib # 60, где я также описал свое понимание проблемы.

@uranusjr Я думаю, что у меня есть способ воспроизвести эту проблему.

Как я могу проверить ваш PR? Я не уверен, как resolvelib интегрируется в pip ...

@romaingz Я работаю над PR-агентством, чтобы внести изменения, чтобы люди могли их протестировать.

Я воткнул в вилку залатанный пип. Вы можете протестировать

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

Я могу создать это сообщение об ошибке из приведенного выше примера 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

(См. # 8495 для обсуждения улучшения сообщения, оставим это пока.)

Однако я обнаружил, что сообщение об ошибке непоследовательно, потому что упорядочение требований, выполняемых преобразователем, не является детерминированным. И я не могу сгенерировать бесконечное разрешение, если добавлю детерминированный порядок (и удалю исправление) 😞

Итак, то, что вчера давало сбой, сегодня перестало патча @uranusjr ).

Есть ли семя, которое я мог бы извлечь из неудачной попытки и повторно использовать для других попыток, чтобы сохранить согласованные результаты?

Есть ли семя, которое я мог бы извлечь из неудачной попытки и повторно использовать для других попыток, чтобы сохранить согласованные результаты?

Я так не думаю - это, вероятно, зависит от рандомизации хэша, которую делает Python (поскольку логика порядка сортировки давала несколько элементов с одним и тем же ключом, и это исправлено в # 9100).

Эта проблема укусила меня сегодня на проекте Cheroot. Я проверил cherrypy / cheroot @ 5de9b053 , установил PIP_USE_FEATURE=2020-resolver и запустил tox и он, похоже, завис. Я отменил его, почистил и перезапустил с помощью tox -vvv и я мог видеть сообщения об установке pytest и покрытия (среди прочего). Снятие флажка функции и тесты выполняются должным образом. Версия пакета, устанавливаемая tox, - 20.2.3 (хотя доступна версия 20.2.4). У меня еще не было возможности продолжить расследование.

В https://github.com/cherrypy/cheroot/tree/pypa-9011 я совершил два коммита, один из которых воспроизводит проблему, а другой применяет предложенное исправление. Кажется, что после применения предложенного исправления код больше не зависает, а обнаруживает конфликт. Это указывает мне на то, что исправление действительно решает проблему.

Хм. Может, я заговорил слишком рано. Я замечаю, что некоторые сборки этой ветки быстро выходили из строя (~ 90 секунд), но другие сборки продолжают работать (~ 20 минут). На моей локальной рабочей станции некоторые запуски зависают, а другие завершаются.

Вероятно, вы также столкнулись с проблемой неопределенности (исправлено в # 9100). Можете ли вы попробовать, сможете ли вы воспроизвести проблему зависания с помощью мастера (который, как я считаю, должен постоянно либо терпеть неудачу, либо успешно)?

Подтверждено - запуск под мастером pip вызывает надежное зависание тестов.

Благодаря! Мне удалось ограничить набор проблемных требований до

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

Удалив любой из них, распознаватель сможет найти решение. Я попытаюсь создать тестовый пример и работать с ним (надеюсь, в течение недели).


Примечание (для себя): Моя текущая гипотеза заключается в том, что эта проблема может быть вызвана, если решатель обнаруживает более одного несвязанного конфликта. Он увидит один, вернется для этого, увидит другой, вернется для этого и снова попадет в первый.

Стоит отметить, что я думаю, что эти ошибки могут иметь какое-то отношение к дополнительным функциям и упоминанию предварительных релизов в требованиях. Вот что произошло в моем случае, когда я получил бесконечный цикл между пакетом и пакетом-плагином. Мне удалось обойти это, избегая предварительных релизов, что также рекомендуется, но я боюсь, что столкнулся с этой ошибкой по крайней мере 3 раза за последние 3 месяца, и только один раз она была ... в моем саду.

Люди здесь могут быть заинтересованы в этом обновлении .

Теперь это один из двух основных препятствий для выпуска пипса 20.3, просто к сведению читающим.

Обновление: исправление для этого было собрано. pip 20.3 (который должен включать исправление), скорее всего, скоро появится, но я обновил свой форк ( упомянутый в этом комментарии ), чтобы включить его. Не стесняйтесь опробовать его и сообщить, действительно ли это решает проблему!

Предлагаемый патч "resolvelib-dev" решает мой собственный случай с бесконечным разрешением https://github.com/pypa/pip/issues/9112#issuecomment -735222069

Я получаю бесконечный цикл, пытаясь установить следующие requirements.txt с pip==20.3 в новую версию venv, python версии 3.8.5 на 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

В конечном итоге установка застревает в цикле с повторением следующего вывода:

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)

Вывод из 20.2.4 с включенным --use-feature=2020-resolver :

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

.. но установка прекращается.

Изменить: исправление конфликта, требуя установки transformers==4.0.0 ОК.

Повторное открытие.

Тоже сталкиваюсь с этим.

Вот файл требований, который воспроизводит его для меня с помощью 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

С 20.2.4 при установке возникает ошибка:
openshift 0.8.9 requires urllib3<1.25, but you'll have urllib3 1.26.2 which is incompatible. но установка завершена

Дело @ tomhosking в конечном итоге дает мне

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

Я не закончил второй, но ожидаю, что это также приведет к возможной ошибке, судя по выходным данным.

В обоих случаях вывод кажется зависшим, так как они многократно показывали одни и те же пакеты снова и снова. Но при внимательном осмотре резолвер очень редко выплевывает разные вещи, указывая на прогресс.

Пример @ 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)

Пример @ 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)
(...)

Поэтому я не думаю, что в преобразователе есть логическая ошибка, только вывод этого pip не очень хорошо выражает то, как он пытается (очень немного) разные вещи.

Пример @ kdelee:
Поэтому я не думаю, что в преобразователе есть логическая ошибка, только вывод этого pip не очень хорошо выражает то, как он пытается (очень немного) разные вещи.

Это правдоподобно, поэтому, хотя это может быть не случай «бесконечной» рекурсии, он все еще пытается выполнить гораздо больше, чем я могу ждать (в настоящее время у меня есть задание, которое выполняется более 3 часов, зацикливаясь в установке pip.) и на самом деле не говорит мне, что не так. Похоже, https://github.com/pypa/pip/issues/9185 - хорошая идея

Спасибо за проверку @uranusjr! Немного похоже на @kdelee , я обнаружил это, потому что

Отчеты, поступающие в это время, отличаются от тех, для которых это было изначально (и того, что отслеживалось как средство блокировки выпуска для 20.3).

Я собираюсь закрыть это в пользу # 9187, так как я хотел бы хранить отчеты 20.2.4 против 20.3 в отдельных выпусках.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги