pip: Pip 20.2.4 goes into infinite resolution of dependencies
Hello,
My CI goes into infinite resolution when trying to install a project’s dependencies for testing:
pip install -e .[test] --use-feature=2020-resolver -i https://artifactory.company.com/api/pypi/pypi/simple
Output
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@Dev_Py3 ${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@Dev_Py3
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@Dev_Py3 ${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@Dev_Py3
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@Dev_Py3 --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@Dev_Py3
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@Dev_Py3 --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@Dev_Py3
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)
I get the last 4 lines repeating forever:
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)
Additional information
In the above output, PIP_OPTS
is set to --use-feature=2020-resolver -i https://artifactory.company.com/api/pypi/pypi/simple
.
We use a company hosted index that does not have any issues with pip==20.2.3
.
About this issue
- Original URL
- State: closed
- Created 4 years ago
- Reactions: 5
- Comments: 40 (26 by maintainers)
Commits related to this issue
- Replicate pypa/pip#9011 — committed to cherrypy/cheroot by jaraco 4 years ago
- Apply proposed fix by uranusjr. Ref pypa/pip#9011 — committed to cherrypy/cheroot by jaraco 4 years ago
- Failing test case for pypa/pip#9011 — committed to sarugaku/resolvelib by uranusjr 4 years ago
- Failing test case for pypa/pip#9011 — committed to sarugaku/resolvelib by uranusjr 4 years ago
- Let users upgrade pip if and when they want Rationale: https://github.com/pypa/pip/issues/9011 — committed to Cheaterman/flask-docker-image by Cheaterman 3 years ago
- Let users upgrade pip if and when they want Rationale: https://github.com/pypa/pip/issues/9011 — committed to Cheaterman/uwsgi-docker-image by Cheaterman 3 years ago
Hey, I’m also seeing a similar problem that suddenly began a day ago.
On pip 20.2.4, I’m able to reproduce this with just
The behavior seems a bit non-deterministic, but each time it will start downloading many versions (possibly every version!) of a dependency and either get stuck in a
Requirement already satisfied
loop or just appears to freeze entirely. This is a boiled down example, but we had a CI build get stuck for 6 hours before getting killed.Notice that the two libs I’m trying to install actually cause a version conflict and if I drop the
--use-feature=2020-resolver
I get a normal error message:also if I drop down to pip 20.2.3 (and use the
2020-resolver
) I also quickly get a dependency conflict error.If I change the above requirement to
google-cloud-monitoring<2.0.0
then it works fine, both with and without the2020-resolver
Hope this helps
Thanks! I’ve managed to limit the problematic requirement set to
Removing any one of these and the resolver would be able to produce a solution. I’ll try to build a test case and work from there (hopefully during the week).
Note (to self): My current hypothesis is this issue can be triggered if the resolver sees more than one unrelated conflicts. It would see one, backtrack for that, see the other one, backtrack for that, and hit the first one again.
Update: A fix for this was put together. pip 20.3 (which should include the fix) will likely happen soon, but I have updated my fork (mentioned in this comment) to include it. Feel free to try it out and report whether it indeed solves the issue!
This is now one of the two major blockers to releasing pip 20.3, just FYI for folks reading.
I’m getting an infinite loop trying to install the following
requirements.txt
withpip==20.3
into a fresh venv, python version 3.8.5 on Mac:The install eventually gets stuck in a loop, with following output repeated:
Output from
20.2.4
with--use-feature=2020-resolver
enabled:… but the install does terminate.
Edit: fixing the conflict by requiring
transformers==4.0.0
installs OK.Folks here may be interested in this update.
@romaingz I’m working on a PR to pip to pull in the changes for people to test.
Thanks for checking @uranusjr! A bit like @kdelee, I found this because a CI workflow timed out. Some way of failing faster or with less excessive output would be great 😃
Reopening.
Confirmed - running under pip master causes the tests to hang reliably.