Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

2020 resolver stalls during installation #8705

Closed
daneah opened this issue Aug 5, 2020 · 3 comments
Closed

2020 resolver stalls during installation #8705

daneah opened this issue Aug 5, 2020 · 3 comments
Labels
resolution: duplicate Duplicate of an existing issue/PR

Comments

@daneah
Copy link
Contributor

daneah commented Aug 5, 2020

What did you want to do?

We have a private Artifactory registry. The set of dependencies listed in the tree at the end install properly when running the following:

$ PIP_INDEX_URL=https://our-artifactory.biz/artifactory/api/pypi/pypi/simple \
    python -m pip install --no-cache-dir \
    [private package 1] \
    [private package 2] \
    ... \
    'pytest>=5.0.1,<6' \
    'pytest-cov>=2.7.1,<3' \
    'pytest-django>=3.4.8,<4' \
    'pytest-randomly>=3,<3.3.0' \
    mypy \
    pylint

But doing the same with PIP_USE_FEATURE=2020-resolver causes a stall. In our CI environment I gave the process as long as 4 hours to complete and it did not.

As an experiment I tried installing with the current resolver first and using the 2020 resolver afterward, and was at one point able to see that it was spinning infinitely on Requirement already satisfied for some of pylint's dependencies. I notice also that the new resolver seems to want to download multiple versions of two different packages that pylint depends on (note astroid and mccabe versions in the output below).

So far I've been unable to create a more minimal reproduction—attempting to install pylint by itself doesn't cause an issue.

Output

...

Collecting pylint
  Using cached https://our-artifactory.bizartifactory/api/pypi/pypi/packages/packages/e8/fb/734960c55474c8f74e6ad4c8588fc44073fb9d69e223269d26a3c2435d16/pylint-2.5.3-py3-none-any.whl (324 kB)
Collecting mccabe<0.7,>=0.6
  Using cached https://our-artifactory.biz/artifactory/api/pypi/pypi/packages/packages/87/89/479dc97e18549e21354893e4ee4ef36db1d237534982482c3681ee6e7b57/mccabe-0.6.1-py2.py3-none-any.whl (8.6 kB)
Collecting astroid<=2.5,>=2.4.0
  Using cached https://our-artifactory.biz/artifactory/api/pypi/pypi/packages/packages/24/a8/5133f51967fb21e46ee50831c3f5dda49e976b7f915408d670b1603d41d6/astroid-2.4.2-py3-none-any.whl (213 kB)
Collecting astroid<=2.5,>=2.4.0
  Using cached https://our-artifactory.biz/artifactory/api/pypi/pypi/packages/packages/46/c9/e9c2642dfb169590fb8bdb395f9329da042ee559c2ae7c1e612a3e5f40b4/astroid-2.4.1-py3-none-any.whl (214 kB)
Collecting astroid<=2.5,>=2.4.0
  Using cached https://our-artifactory.biz/artifactory/api/pypi/pypi/packages/packages/7c/f6/880bade8329525fd9aa9051891b4b8fe2e52c7aab7412443f8743028a590/astroid-2.4.0-py3-none-any.whl (327 kB)
Collecting mccabe<0.7,>=0.6
  Using cached https://our-artifactory.biz/artifactory/api/pypi/pypi/packages/packages/68/21/b80d285b35061757a6fccd867d40757d21fda8337537de288c463b06ecfd/mccabe-0.6.0-py2.py3-none-any.whl (8.5 kB)

[stalls here]

Additional information

pip version: 20.2.1

This example shows the result of running with the new resolver after having run the current resolver already, which provides some evidence that the new resolver seems eager to download more versions:

...

Requirement already satisfied: astroid<=2.5,>=2.4.0 in /usr/local/lib/python3.7/site-packages (from pylint) (2.4.2)
Requirement already satisfied: isort<5,>=4.2.5 in /usr/local/lib/python3.7/site-packages (from pylint) (4.3.21)
Requirement already satisfied: toml>=0.7.1 in /usr/local/lib/python3.7/site-packages (from pylint) (0.10.1)
Collecting astroid<=2.5,>=2.4.0
  Downloading https://our-artifactory.biz/artifactory/api/pypi/pypi/packages/packages/46/c9/e9c2642dfb169590fb8bdb395f9329da042ee559c2ae7c1e612a3e5f40b4/astroid-2.4.1-py3-none-any.whl (214 kB)
     |████████████████████████████████| 214 kB 11.4 MB/s
Collecting astroid<=2.5,>=2.4.0
  Downloading https://our-artifactory.biz/artifactory/api/pypi/pypi/packages/packages/7c/f6/880bade8329525fd9aa9051891b4b8fe2e52c7aab7412443f8743028a590/astroid-2.4.0-py3-none-any.whl (327 kB)
     |████████████████████████████████| 327 kB 12.4 MB/s
Collecting mccabe<0.7,>=0.6
  Downloading https://our-artifactory.biz/artifactory/api/pypi/pypi/packages/packages/68/21/b80d285b35061757a6fccd867d40757d21fda8337537de288c463b06ecfd/mccabe-0.6.0-py2.py3-none-any.whl (8.5 kB)

[stalls here]
Dependency tree
root@ac97dcf7ba94:/code/shared-packages/[private package]# pipdeptree
Warning!!! Possibly conflicting dependencies found:
* astroid==2.4.2
 - wrapt [required: ~=1.11, installed: 1.10.4]
------------------------------------------------------------------------
[private package]
  - Django [required: >=1.11, installed: 3.1]
    - asgiref [required: ~=3.2.10, installed: 3.2.10]
    - pytz [required: Any, installed: 2020.1]
    - sqlparse [required: >=0.2.2, installed: 0.3.1]
  - [private package]
    - beautifulsoup4 [required: >=4.3.2,<5, installed: 4.9.1]
      - soupsieve [required: >1.2, installed: 2.0.1]
    - boto3 [required: >=1.9,<2, installed: 1.14.35]
      - botocore [required: >=1.17.35,<1.18.0, installed: 1.17.35]
        - docutils [required: >=0.10,<0.16, installed: 0.15.2]
        - jmespath [required: >=0.7.1,<1.0.0, installed: 0.10.0]
        - python-dateutil [required: >=2.1,<3.0.0, installed: 2.8.1]
          - six [required: >=1.5, installed: 1.15.0]
        - urllib3 [required: >=1.20,<1.26, installed: 1.25.10]
      - jmespath [required: >=0.7.1,<1.0.0, installed: 0.10.0]
      - s3transfer [required: >=0.3.0,<0.4.0, installed: 0.3.3]
        - botocore [required: >=1.12.36,<2.0a.0, installed: 1.17.35]
          - docutils [required: >=0.10,<0.16, installed: 0.15.2]
          - jmespath [required: >=0.7.1,<1.0.0, installed: 0.10.0]
          - python-dateutil [required: >=2.1,<3.0.0, installed: 2.8.1]
            - six [required: >=1.5, installed: 1.15.0]
          - urllib3 [required: >=1.20,<1.26, installed: 1.25.10]
    - botocore [required: >=1.12,<2, installed: 1.17.35]
      - docutils [required: >=0.10,<0.16, installed: 0.15.2]
      - jmespath [required: >=0.7.1,<1.0.0, installed: 0.10.0]
      - python-dateutil [required: >=2.1,<3.0.0, installed: 2.8.1]
        - six [required: >=1.5, installed: 1.15.0]
      - urllib3 [required: >=1.20,<1.26, installed: 1.25.10]
    - Django [required: >=1.11, installed: 3.1]
      - asgiref [required: ~=3.2.10, installed: 3.2.10]
      - pytz [required: Any, installed: 2020.1]
      - sqlparse [required: >=0.2.2, installed: 0.3.1]
    - html5lib [required: ==0.999, installed: 0.999]
      - six [required: Any, installed: 1.15.0]
    - netaddr [required: ==0.7.15, installed: 0.7.15]
    - python3-memcached [required: ==1.51, installed: 1.51]
    - requests [required: >=2.11.1,<3, installed: 2.24.0]
      - certifi [required: >=2017.4.17, installed: 2020.6.20]
      - chardet [required: >=3.0.2,<4, installed: 3.0.4]
      - idna [required: >=2.5,<3, installed: 2.10]
      - urllib3 [required: >=1.21.1,<1.26,!=1.25.1,!=1.25.0, installed: 1.25.10]
    - statsd [required: >=3.1,<4, installed: 3.3.0]
    - [private package]
      - Django [required: >=1.11, installed: 3.1]
        - asgiref [required: ~=3.2.10, installed: 3.2.10]
        - pytz [required: Any, installed: 2020.1]
        - sqlparse [required: >=0.2.2, installed: 0.3.1]
      - requests [required: >=2.9.1,<3, installed: 2.24.0]
        - certifi [required: >=2017.4.17, installed: 2020.6.20]
        - chardet [required: >=3.0.2,<4, installed: 3.0.4]
        - idna [required: >=2.5,<3, installed: 2.10]
        - urllib3 [required: >=1.21.1,<1.26,!=1.25.1,!=1.25.0, installed: 1.25.10]
    - wrapt [required: ==1.10.4, installed: 1.10.4]
  - statsd [required: >=3.1,<4, installed: 3.3.0]
mypy==0.782
  - mypy-extensions [required: >=0.4.3,<0.5.0, installed: 0.4.3]
  - typed-ast [required: >=1.4.0,<1.5.0, installed: 1.4.1]
  - typing-extensions [required: >=3.7.4, installed: 3.7.4.2]
pipdeptree==1.0.0
  - pip [required: >=6.0.0, installed: 20.2.1]
pylint==2.5.3
  - astroid [required: >=2.4.0,<=2.5, installed: 2.4.2]
    - lazy-object-proxy [required: ==1.4.*, installed: 1.4.3]
    - six [required: ~=1.12, installed: 1.15.0]
    - typed-ast [required: >=1.4.0,<1.5, installed: 1.4.1]
    - wrapt [required: ~=1.11, installed: 1.10.4]
  - isort [required: >=4.2.5,<5, installed: 4.3.21]
  - mccabe [required: >=0.6,<0.7, installed: 0.6.1]
  - toml [required: >=0.7.1, installed: 0.10.1]
pytest-cov==2.10.0
  - coverage [required: >=4.4, installed: 5.2.1]
  - pytest [required: >=4.6, installed: 5.4.3]
    - attrs [required: >=17.4.0, installed: 19.3.0]
    - importlib-metadata [required: >=0.12, installed: 1.7.0]
      - zipp [required: >=0.5, installed: 3.1.0]
    - more-itertools [required: >=4.0.0, installed: 8.4.0]
    - packaging [required: Any, installed: 20.4]
      - pyparsing [required: >=2.0.2, installed: 2.4.7]
      - six [required: Any, installed: 1.15.0]
    - pluggy [required: >=0.12,<1.0, installed: 0.13.1]
      - importlib-metadata [required: >=0.12, installed: 1.7.0]
        - zipp [required: >=0.5, installed: 3.1.0]
    - py [required: >=1.5.0, installed: 1.9.0]
    - wcwidth [required: Any, installed: 0.2.5]
pytest-django==3.9.0
  - pytest [required: >=3.6, installed: 5.4.3]
    - attrs [required: >=17.4.0, installed: 19.3.0]
    - importlib-metadata [required: >=0.12, installed: 1.7.0]
      - zipp [required: >=0.5, installed: 3.1.0]
    - more-itertools [required: >=4.0.0, installed: 8.4.0]
    - packaging [required: Any, installed: 20.4]
      - pyparsing [required: >=2.0.2, installed: 2.4.7]
      - six [required: Any, installed: 1.15.0]
    - pluggy [required: >=0.12,<1.0, installed: 0.13.1]
      - importlib-metadata [required: >=0.12, installed: 1.7.0]
        - zipp [required: >=0.5, installed: 3.1.0]
    - py [required: >=1.5.0, installed: 1.9.0]
    - wcwidth [required: Any, installed: 0.2.5]
pytest-randomly==3.2.1
  - importlib-metadata [required: Any, installed: 1.7.0]
    - zipp [required: >=0.5, installed: 3.1.0]
  - pytest [required: Any, installed: 5.4.3]
    - attrs [required: >=17.4.0, installed: 19.3.0]
    - importlib-metadata [required: >=0.12, installed: 1.7.0]
      - zipp [required: >=0.5, installed: 3.1.0]
    - more-itertools [required: >=4.0.0, installed: 8.4.0]
    - packaging [required: Any, installed: 20.4]
      - pyparsing [required: >=2.0.2, installed: 2.4.7]
      - six [required: Any, installed: 1.15.0]
    - pluggy [required: >=0.12,<1.0, installed: 0.13.1]
      - importlib-metadata [required: >=0.12, installed: 1.7.0]
        - zipp [required: >=0.5, installed: 3.1.0]
    - py [required: >=1.5.0, installed: 1.9.0]
    - wcwidth [required: Any, installed: 0.2.5]
[private package]
  - apiron [required: >=5.1.0,<6, installed: 5.1.0]
    - requests [required: >=2.11.1,<3, installed: 2.24.0]
      - certifi [required: >=2017.4.17, installed: 2020.6.20]
      - chardet [required: >=3.0.2,<4, installed: 3.0.4]
      - idna [required: >=2.5,<3, installed: 2.10]
      - urllib3 [required: >=1.21.1,<1.26,!=1.25.1,!=1.25.0, installed: 1.25.10]
  - boto3 [required: >=1.9,<2, installed: 1.14.35]
    - botocore [required: >=1.17.35,<1.18.0, installed: 1.17.35]
      - docutils [required: >=0.10,<0.16, installed: 0.15.2]
      - jmespath [required: >=0.7.1,<1.0.0, installed: 0.10.0]
      - python-dateutil [required: >=2.1,<3.0.0, installed: 2.8.1]
        - six [required: >=1.5, installed: 1.15.0]
      - urllib3 [required: >=1.20,<1.26, installed: 1.25.10]
    - jmespath [required: >=0.7.1,<1.0.0, installed: 0.10.0]
    - s3transfer [required: >=0.3.0,<0.4.0, installed: 0.3.3]
      - botocore [required: >=1.12.36,<2.0a.0, installed: 1.17.35]
        - docutils [required: >=0.10,<0.16, installed: 0.15.2]
        - jmespath [required: >=0.7.1,<1.0.0, installed: 0.10.0]
        - python-dateutil [required: >=2.1,<3.0.0, installed: 2.8.1]
          - six [required: >=1.5, installed: 1.15.0]
        - urllib3 [required: >=1.20,<1.26, installed: 1.25.10]
  - botocore [required: >=1.12,<2, installed: 1.17.35]
    - docutils [required: >=0.10,<0.16, installed: 0.15.2]
    - jmespath [required: >=0.7.1,<1.0.0, installed: 0.10.0]
    - python-dateutil [required: >=2.1,<3.0.0, installed: 2.8.1]
      - six [required: >=1.5, installed: 1.15.0]
    - urllib3 [required: >=1.20,<1.26, installed: 1.25.10]
  - Django [required: >=1.11, installed: 3.1]
    - asgiref [required: ~=3.2.10, installed: 3.2.10]
    - pytz [required: Any, installed: 2020.1]
    - sqlparse [required: >=0.2.2, installed: 0.3.1]
  - [private package]
    - apiron [required: >=4.2.0,<6, installed: 5.1.0]
      - requests [required: >=2.11.1,<3, installed: 2.24.0]
        - certifi [required: >=2017.4.17, installed: 2020.6.20]
        - chardet [required: >=3.0.2,<4, installed: 3.0.4]
        - idna [required: >=2.5,<3, installed: 2.10]
        - urllib3 [required: >=1.21.1,<1.26,!=1.25.1,!=1.25.0, installed: 1.25.10]
  - [private package]
    - beautifulsoup4 [required: >=4.3.2,<5, installed: 4.9.1]
      - soupsieve [required: >1.2, installed: 2.0.1]
    - boto3 [required: >=1.9,<2, installed: 1.14.35]
      - botocore [required: >=1.17.35,<1.18.0, installed: 1.17.35]
        - docutils [required: >=0.10,<0.16, installed: 0.15.2]
        - jmespath [required: >=0.7.1,<1.0.0, installed: 0.10.0]
        - python-dateutil [required: >=2.1,<3.0.0, installed: 2.8.1]
          - six [required: >=1.5, installed: 1.15.0]
        - urllib3 [required: >=1.20,<1.26, installed: 1.25.10]
      - jmespath [required: >=0.7.1,<1.0.0, installed: 0.10.0]
      - s3transfer [required: >=0.3.0,<0.4.0, installed: 0.3.3]
        - botocore [required: >=1.12.36,<2.0a.0, installed: 1.17.35]
          - docutils [required: >=0.10,<0.16, installed: 0.15.2]
          - jmespath [required: >=0.7.1,<1.0.0, installed: 0.10.0]
          - python-dateutil [required: >=2.1,<3.0.0, installed: 2.8.1]
            - six [required: >=1.5, installed: 1.15.0]
          - urllib3 [required: >=1.20,<1.26, installed: 1.25.10]
    - botocore [required: >=1.12,<2, installed: 1.17.35]
      - docutils [required: >=0.10,<0.16, installed: 0.15.2]
      - jmespath [required: >=0.7.1,<1.0.0, installed: 0.10.0]
      - python-dateutil [required: >=2.1,<3.0.0, installed: 2.8.1]
        - six [required: >=1.5, installed: 1.15.0]
      - urllib3 [required: >=1.20,<1.26, installed: 1.25.10]
    - Django [required: >=1.11, installed: 3.1]
      - asgiref [required: ~=3.2.10, installed: 3.2.10]
      - pytz [required: Any, installed: 2020.1]
      - sqlparse [required: >=0.2.2, installed: 0.3.1]
    - html5lib [required: ==0.999, installed: 0.999]
      - six [required: Any, installed: 1.15.0]
    - netaddr [required: ==0.7.15, installed: 0.7.15]
    - python3-memcached [required: ==1.51, installed: 1.51]
    - requests [required: >=2.11.1,<3, installed: 2.24.0]
      - certifi [required: >=2017.4.17, installed: 2020.6.20]
      - chardet [required: >=3.0.2,<4, installed: 3.0.4]
      - idna [required: >=2.5,<3, installed: 2.10]
      - urllib3 [required: >=1.21.1,<1.26,!=1.25.1,!=1.25.0, installed: 1.25.10]
    - statsd [required: >=3.1,<4, installed: 3.3.0]
    - [private package] [required: >=1.0.0,<2, installed: 1.1.0]
      - Django [required: >=1.11, installed: 3.1]
        - asgiref [required: ~=3.2.10, installed: 3.2.10]
        - pytz [required: Any, installed: 2020.1]
        - sqlparse [required: >=0.2.2, installed: 0.3.1]
      - requests [required: >=2.9.1,<3, installed: 2.24.0]
        - certifi [required: >=2017.4.17, installed: 2020.6.20]
        - chardet [required: >=3.0.2,<4, installed: 3.0.4]
        - idna [required: >=2.5,<3, installed: 2.10]
        - urllib3 [required: >=1.21.1,<1.26,!=1.25.1,!=1.25.0, installed: 1.25.10]
    - wrapt [required: ==1.10.4, installed: 1.10.4]
  - pydantic [required: >=1.4, installed: 1.6.1]
  - requests [required: >=2.24.0,<3, installed: 2.24.0]
    - certifi [required: >=2017.4.17, installed: 2020.6.20]
    - chardet [required: >=3.0.2,<4, installed: 3.0.4]
    - idna [required: >=2.5,<3, installed: 2.10]
    - urllib3 [required: >=1.21.1,<1.26,!=1.25.1,!=1.25.0, installed: 1.25.10]
  - retrying [required: >=1.3.3,<2, installed: 1.3.3]
    - six [required: >=1.7.0, installed: 1.15.0]
  - urllib3 [required: >=1.25.7,<2, installed: 1.25.10]
  - [private package]
    - Django [required: >=1.11, installed: 3.1]
      - asgiref [required: ~=3.2.10, installed: 3.2.10]
      - pytz [required: Any, installed: 2020.1]
      - sqlparse [required: >=0.2.2, installed: 0.3.1]
    - requests [required: >=2.9.1,<3, installed: 2.24.0]
      - certifi [required: >=2017.4.17, installed: 2020.6.20]
      - chardet [required: >=3.0.2,<4, installed: 3.0.4]
      - idna [required: >=2.5,<3, installed: 2.10]
      - urllib3 [required: >=1.21.1,<1.26,!=1.25.1,!=1.25.0, installed: 1.25.10]
setuptools==47.1.0
tox==3.18.1
  - filelock [required: >=3.0.0, installed: 3.0.12]
  - importlib-metadata [required: >=0.12,<2, installed: 1.7.0]
    - zipp [required: >=0.5, installed: 3.1.0]
  - packaging [required: >=14, installed: 20.4]
    - pyparsing [required: >=2.0.2, installed: 2.4.7]
    - six [required: Any, installed: 1.15.0]
  - pluggy [required: >=0.12.0, installed: 0.13.1]
    - importlib-metadata [required: >=0.12, installed: 1.7.0]
      - zipp [required: >=0.5, installed: 3.1.0]
  - py [required: >=1.4.17, installed: 1.9.0]
  - six [required: >=1.14.0, installed: 1.15.0]
  - toml [required: >=0.9.4, installed: 0.10.1]
  - virtualenv [required: >=16.0.0,!=20.0.7,!=20.0.6,!=20.0.5,!=20.0.4,!=20.0.3,!=20.0.2,!=20.0.1,!=20.0.0, installed: 20.0.30]
    - appdirs [required: >=1.4.3,<2, installed: 1.4.4]
    - distlib [required: >=0.3.1,<1, installed: 0.3.1]
    - filelock [required: >=3.0.0,<4, installed: 3.0.12]
    - importlib-metadata [required: >=0.12,<2, installed: 1.7.0]
      - zipp [required: >=0.5, installed: 3.1.0]
    - six [required: >=1.9.0,<2, installed: 1.15.0]
@triage-new-issues triage-new-issues bot added the S: needs triage Issues/PRs that need to be triaged label Aug 5, 2020
@daneah
Copy link
Contributor Author

daneah commented Aug 5, 2020

Apologies, this seems precisely like a duplicate of #8683. I searched for some keywords that don't quite appear in that issue, and neglected to scroll through the first page of issues 🤦 feel free to close—I'll leave open for the moment as a data point.

@uranusjr
Copy link
Member

uranusjr commented Aug 5, 2020

I’m marking this as a duplicate and merging the conversaion into #8683.

Edit: the tracking issue is #9011

@uranusjr uranusjr closed this as completed Aug 5, 2020
@uranusjr uranusjr added the resolution: duplicate Duplicate of an existing issue/PR label Aug 5, 2020
@triage-new-issues triage-new-issues bot removed the S: needs triage Issues/PRs that need to be triaged label Aug 5, 2020
@daneah
Copy link
Contributor Author

daneah commented Nov 8, 2020

For anyone arriving back here—I found that my specific situation was caused by an incompatibility between two wrapt versions, one specifically requested in our application and the other requested by astroid. The current resolver mentions this quite plainly, while the new resolver seems to make no clear mention of the progeny or which dependency is in conflict.

I found this while testing whether the solution described here would fix my issue, ultimately finding that I could fix the stalling myself regardless of the resolver version if I just know the right conflicting dependencies to investigate.

@github-actions github-actions bot locked as resolved and limited conversation to collaborators Oct 7, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
resolution: duplicate Duplicate of an existing issue/PR
Projects
None yet
Development

No branches or pull requests

2 participants