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

Pipenv can't resolve a Pipfile that has a valid resolution #2640

Closed
greysteil opened this issue Jul 24, 2018 · 4 comments
Closed

Pipenv can't resolve a Pipfile that has a valid resolution #2640

greysteil opened this issue Jul 24, 2018 · 4 comments

Comments

@greysteil
Copy link
Contributor

greysteil commented Jul 24, 2018

Issue description

Pipenv can't resolve the following Pipfile, even though it has a (many?) valid resolution.

[[source]]

url = "https://pypi.python.org/simple"
verify_ssl = true
name = "pypi"


[packages]

"flake8" = "*"
kafka-python = "*"
mccabe = "*"
py = "*"
pycodestyle = "*"
pyflakes = "*"
pyparsing = "*"
pytest = "*"
requests = "*"


[dev-packages]
Expected result

Successful resolution, which is possible if the requirement on pycodestyle is switched to ==2.3.1 and the requirement on pyflakes is switched to ==1.6.0 (i.e., if the resolver is given a different starting point).

Actual result
pipenv lock --verbose
Locking [dev-packages] dependencies…
Locking [packages] dependencies…
using sources: [{'url': 'https://pypi.python.org/simple', 'verify_ssl': True, 'name': 'pypi'}]
Using pip: -i https://pypi.python.org/simple

                          ROUND 1                           
Current constraints:
  flake8 (from -r /var/folders/kv/y02nj9zd5ss16sn505tk6g_40000gn/T/pipenv-kbysttyf-requirements/pipenv-usrmcs08-constraints.txt (line 2))
  kafka-python (from -r /var/folders/kv/y02nj9zd5ss16sn505tk6g_40000gn/T/pipenv-kbysttyf-requirements/pipenv-usrmcs08-constraints.txt (line 3))
  mccabe (from -r /var/folders/kv/y02nj9zd5ss16sn505tk6g_40000gn/T/pipenv-kbysttyf-requirements/pipenv-usrmcs08-constraints.txt (line 4))
  py (from -r /var/folders/kv/y02nj9zd5ss16sn505tk6g_40000gn/T/pipenv-kbysttyf-requirements/pipenv-usrmcs08-constraints.txt (line 5))
  pycodestyle (from -r /var/folders/kv/y02nj9zd5ss16sn505tk6g_40000gn/T/pipenv-kbysttyf-requirements/pipenv-usrmcs08-constraints.txt (line 6))
  pyflakes (from -r /var/folders/kv/y02nj9zd5ss16sn505tk6g_40000gn/T/pipenv-kbysttyf-requirements/pipenv-usrmcs08-constraints.txt (line 7))
  pyparsing (from -r /var/folders/kv/y02nj9zd5ss16sn505tk6g_40000gn/T/pipenv-kbysttyf-requirements/pipenv-usrmcs08-constraints.txt (line 8))
  pytest (from -r /var/folders/kv/y02nj9zd5ss16sn505tk6g_40000gn/T/pipenv-kbysttyf-requirements/pipenv-usrmcs08-constraints.txt (line 9))
  requests (from -r /var/folders/kv/y02nj9zd5ss16sn505tk6g_40000gn/T/pipenv-kbysttyf-requirements/pipenv-usrmcs08-constraints.txt (line 10))

Finding the best candidates:
  found candidate flake8==3.5.0 (constraint was <any>)
  found candidate kafka-python==1.4.3 (constraint was <any>)
  found candidate mccabe==0.6.1 (constraint was <any>)
  found candidate py==1.5.4 (constraint was <any>)
  found candidate pycodestyle==2.4.0 (constraint was <any>)
  found candidate pyflakes==2.0.0 (constraint was <any>)
  found candidate pyparsing==2.2.0 (constraint was <any>)
  found candidate pytest==3.6.3 (constraint was <any>)
  found candidate requests==2.19.1 (constraint was <any>)

Finding secondary dependencies:
  pyflakes==2.0.0           requires pyflakes==2.0.0; python_version != "3.1.*" and python_version != "3.2.*" and python_version >= "2.7" and python_version != "3.3.*" and python_version != "3.0.*"
  kafka-python==1.4.3       requires kafka-python==1.4.3
  pytest==3.6.3             requires atomicwrites>=1.0, attrs>=17.4.0, more-itertools>=4.0.0, pluggy<0.7,>=0.5, py>=1.5.0, pytest==3.6.3, setuptools, six>=1.10.0
  py==1.5.4                 requires py==1.5.4; python_version != "3.3.*" and python_version != "3.1.*" and python_version != "3.2.*" and python_version >= "2.7" and python_version != "3.0.*"
  pycodestyle==2.4.0        requires pycodestyle==2.4.0
  flake8==3.5.0             requires mccabe<0.7.0,>=0.6.0, pycodestyle<2.4.0,>=2.0.0, pyflakes<1.7.0,>=1.5.0
  requests==2.19.1          requires certifi>=2017.4.17, chardet<3.1.0,>=3.0.2, idna<2.8,>=2.5, requests==2.19.1, urllib3<1.24,>=1.21.1
  mccabe==0.6.1             requires -
  pyparsing==2.2.0          requires pyparsing==2.2.0

New dependencies found in this round:
  adding ['atomicwrites', '>=1.0', '[]']
  adding ['attrs', '>=17.4.0', '[]']
  adding ['certifi', '>=2017.4.17', '[]']
  adding ['chardet', '<3.1.0,>=3.0.2', '[]']
  adding ['idna', '<2.8,>=2.5', '[]']
  adding ['kafka-python', '==1.4.3', '[]']
  adding ['mccabe', '<0.7.0,>=0.6.0', '[]']
  adding ['more-itertools', '>=4.0.0', '[]']
  adding ['pluggy', '<0.7,>=0.5', '[]']
  adding ['py', '==1.5.4,>=1.5.0', '[]']
  adding ['pycodestyle', '<2.4.0,==2.4.0,>=2.0.0', '[]']
  adding ['pyflakes', '<1.7.0,==2.0.0,>=1.5.0', '[]']
  adding ['pyparsing', '==2.2.0', '[]']
  adding ['pytest', '==3.6.3', '[]']
  adding ['requests', '==2.19.1', '[]']
  adding ['six', '>=1.10.0', '[]']
  adding ['urllib3', '<1.24,>=1.21.1', '[]']
Removed dependencies in this round:
Unsafe dependencies in this round:
------------------------------------------------------------
Result of round 1: not stable

                          ROUND 2                           
Current constraints:
  atomicwrites>=1.0
  attrs>=17.4.0
  certifi>=2017.4.17
  chardet<3.1.0,>=3.0.2
  flake8 (from -r /var/folders/kv/y02nj9zd5ss16sn505tk6g_40000gn/T/pipenv-kbysttyf-requirements/pipenv-usrmcs08-constraints.txt (line 2))
  idna<2.8,>=2.5
  kafka-python==1.4.3 (from -r /var/folders/kv/y02nj9zd5ss16sn505tk6g_40000gn/T/pipenv-kbysttyf-requirements/pipenv-usrmcs08-constraints.txt (line 3))
  mccabe<0.7.0,>=0.6.0 (from -r /var/folders/kv/y02nj9zd5ss16sn505tk6g_40000gn/T/pipenv-kbysttyf-requirements/pipenv-usrmcs08-constraints.txt (line 4))
  more-itertools>=4.0.0
  pluggy<0.7,>=0.5
  py==1.5.4,>=1.5.0 (from -r /var/folders/kv/y02nj9zd5ss16sn505tk6g_40000gn/T/pipenv-kbysttyf-requirements/pipenv-usrmcs08-constraints.txt (line 5))
  pycodestyle<2.4.0,==2.4.0,>=2.0.0 (from -r /var/folders/kv/y02nj9zd5ss16sn505tk6g_40000gn/T/pipenv-kbysttyf-requirements/pipenv-usrmcs08-constraints.txt (line 6))
  pyflakes<1.7.0,==2.0.0,>=1.5.0 (from -r /var/folders/kv/y02nj9zd5ss16sn505tk6g_40000gn/T/pipenv-kbysttyf-requirements/pipenv-usrmcs08-constraints.txt (line 7))
  pyparsing==2.2.0 (from -r /var/folders/kv/y02nj9zd5ss16sn505tk6g_40000gn/T/pipenv-kbysttyf-requirements/pipenv-usrmcs08-constraints.txt (line 8))
  pytest==3.6.3 (from -r /var/folders/kv/y02nj9zd5ss16sn505tk6g_40000gn/T/pipenv-kbysttyf-requirements/pipenv-usrmcs08-constraints.txt (line 9))
  requests==2.19.1 (from -r /var/folders/kv/y02nj9zd5ss16sn505tk6g_40000gn/T/pipenv-kbysttyf-requirements/pipenv-usrmcs08-constraints.txt (line 10))
  six>=1.10.0
  urllib3<1.24,>=1.21.1

Finding the best candidates:
  found candidate atomicwrites==1.1.5 (constraint was >=1.0)
  found candidate attrs==18.1.0 (constraint was >=17.4.0)
  found candidate certifi==2018.4.16 (constraint was >=2017.4.17)
  found candidate chardet==3.0.4 (constraint was >=3.0.2,<3.1.0)
  found candidate flake8==3.5.0 (constraint was <any>)
  found candidate idna==2.7 (constraint was >=2.5,<2.8)
  found candidate kafka-python==1.4.3 (constraint was ==1.4.3)
  found candidate mccabe==0.6.1 (constraint was >=0.6.0,<0.7.0)
  found candidate more-itertools==4.2.0 (constraint was >=4.0.0)
  found candidate pluggy==0.6.0 (constraint was >=0.5,<0.7)
  found candidate py==1.5.4 (constraint was >=1.5.0,==1.5.4)
Using pip: -i https://pypi.python.org/simple

                          ROUND 1                           
Current constraints:
  flake8 (from -r /var/folders/kv/y02nj9zd5ss16sn505tk6g_40000gn/T/pipenv-kbysttyf-requirements/pipenv-4stuouhu-constraints.txt (line 2))
  kafka-python (from -r /var/folders/kv/y02nj9zd5ss16sn505tk6g_40000gn/T/pipenv-kbysttyf-requirements/pipenv-4stuouhu-constraints.txt (line 3))
  mccabe (from -r /var/folders/kv/y02nj9zd5ss16sn505tk6g_40000gn/T/pipenv-kbysttyf-requirements/pipenv-4stuouhu-constraints.txt (line 4))
  py (from -r /var/folders/kv/y02nj9zd5ss16sn505tk6g_40000gn/T/pipenv-kbysttyf-requirements/pipenv-4stuouhu-constraints.txt (line 5))
  pycodestyle (from -r /var/folders/kv/y02nj9zd5ss16sn505tk6g_40000gn/T/pipenv-kbysttyf-requirements/pipenv-4stuouhu-constraints.txt (line 6))
  pyflakes (from -r /var/folders/kv/y02nj9zd5ss16sn505tk6g_40000gn/T/pipenv-kbysttyf-requirements/pipenv-4stuouhu-constraints.txt (line 7))
  pyparsing (from -r /var/folders/kv/y02nj9zd5ss16sn505tk6g_40000gn/T/pipenv-kbysttyf-requirements/pipenv-4stuouhu-constraints.txt (line 8))
  pytest (from -r /var/folders/kv/y02nj9zd5ss16sn505tk6g_40000gn/T/pipenv-kbysttyf-requirements/pipenv-4stuouhu-constraints.txt (line 9))
  requests (from -r /var/folders/kv/y02nj9zd5ss16sn505tk6g_40000gn/T/pipenv-kbysttyf-requirements/pipenv-4stuouhu-constraints.txt (line 10))

Finding the best candidates:
  found candidate flake8==3.5.0 (constraint was <any>)
  found candidate kafka-python==1.4.3 (constraint was <any>)
  found candidate mccabe==0.6.1 (constraint was <any>)
  found candidate py==1.5.4 (constraint was <any>)
  found candidate pycodestyle==2.4.0 (constraint was <any>)
  found candidate pyflakes==2.0.0 (constraint was <any>)
  found candidate pyparsing==2.2.0 (constraint was <any>)
  found candidate pytest==3.6.3 (constraint was <any>)
  found candidate requests==2.19.1 (constraint was <any>)

Finding secondary dependencies:
  py==1.5.4                 requires py==1.5.4; python_version != "3.3.*" and python_version != "3.1.*" and python_version != "3.2.*" and python_version >= "2.7" and python_version != "3.0.*"
  kafka-python==1.4.3       requires kafka-python==1.4.3
  pyparsing==2.2.0          requires pyparsing==2.2.0
  requests==2.19.1          requires certifi>=2017.4.17, chardet<3.1.0,>=3.0.2, idna<2.8,>=2.5, requests==2.19.1, urllib3<1.24,>=1.21.1
  pycodestyle==2.4.0        requires pycodestyle==2.4.0
  mccabe==0.6.1             requires -
  flake8==3.5.0             requires mccabe<0.7.0,>=0.6.0, pycodestyle<2.4.0,>=2.0.0, pyflakes<1.7.0,>=1.5.0
  pyflakes==2.0.0           requires pyflakes==2.0.0; python_version != "3.1.*" and python_version != "3.2.*" and python_version >= "2.7" and python_version != "3.3.*" and python_version != "3.0.*"
  pytest==3.6.3             requires atomicwrites>=1.0, attrs>=17.4.0, more-itertools>=4.0.0, pluggy<0.7,>=0.5, py>=1.5.0, pytest==3.6.3, setuptools, six>=1.10.0

New dependencies found in this round:
  adding ['atomicwrites', '>=1.0', '[]']
  adding ['attrs', '>=17.4.0', '[]']
  adding ['certifi', '>=2017.4.17', '[]']
  adding ['chardet', '<3.1.0,>=3.0.2', '[]']
  adding ['idna', '<2.8,>=2.5', '[]']
  adding ['kafka-python', '==1.4.3', '[]']
  adding ['mccabe', '<0.7.0,>=0.6.0', '[]']
  adding ['more-itertools', '>=4.0.0', '[]']
  adding ['pluggy', '<0.7,>=0.5', '[]']
  adding ['py', '==1.5.4,>=1.5.0', '[]']
  adding ['pycodestyle', '<2.4.0,==2.4.0,>=2.0.0', '[]']
  adding ['pyflakes', '<1.7.0,==2.0.0,>=1.5.0', '[]']
  adding ['pyparsing', '==2.2.0', '[]']
  adding ['pytest', '==3.6.3', '[]']
  adding ['requests', '==2.19.1', '[]']
  adding ['six', '>=1.10.0', '[]']
  adding ['urllib3', '<1.24,>=1.21.1', '[]']
Removed dependencies in this round:
Unsafe dependencies in this round:
------------------------------------------------------------
Result of round 1: not stable

                          ROUND 2                           
Current constraints:
  atomicwrites>=1.0
  attrs>=17.4.0
  certifi>=2017.4.17
  chardet<3.1.0,>=3.0.2
  flake8 (from -r /var/folders/kv/y02nj9zd5ss16sn505tk6g_40000gn/T/pipenv-kbysttyf-requirements/pipenv-4stuouhu-constraints.txt (line 2))
  idna<2.8,>=2.5
  kafka-python==1.4.3 (from -r /var/folders/kv/y02nj9zd5ss16sn505tk6g_40000gn/T/pipenv-kbysttyf-requirements/pipenv-4stuouhu-constraints.txt (line 3))
  mccabe<0.7.0,>=0.6.0 (from -r /var/folders/kv/y02nj9zd5ss16sn505tk6g_40000gn/T/pipenv-kbysttyf-requirements/pipenv-4stuouhu-constraints.txt (line 4))
  more-itertools>=4.0.0
  pluggy<0.7,>=0.5
  py==1.5.4,>=1.5.0 (from -r /var/folders/kv/y02nj9zd5ss16sn505tk6g_40000gn/T/pipenv-kbysttyf-requirements/pipenv-4stuouhu-constraints.txt (line 5))
  pycodestyle<2.4.0,==2.4.0,>=2.0.0 (from -r /var/folders/kv/y02nj9zd5ss16sn505tk6g_40000gn/T/pipenv-kbysttyf-requirements/pipenv-4stuouhu-constraints.txt (line 6))
  pyflakes<1.7.0,==2.0.0,>=1.5.0 (from -r /var/folders/kv/y02nj9zd5ss16sn505tk6g_40000gn/T/pipenv-kbysttyf-requirements/pipenv-4stuouhu-constraints.txt (line 7))
  pyparsing==2.2.0 (from -r /var/folders/kv/y02nj9zd5ss16sn505tk6g_40000gn/T/pipenv-kbysttyf-requirements/pipenv-4stuouhu-constraints.txt (line 8))
  pytest==3.6.3 (from -r /var/folders/kv/y02nj9zd5ss16sn505tk6g_40000gn/T/pipenv-kbysttyf-requirements/pipenv-4stuouhu-constraints.txt (line 9))
  requests==2.19.1 (from -r /var/folders/kv/y02nj9zd5ss16sn505tk6g_40000gn/T/pipenv-kbysttyf-requirements/pipenv-4stuouhu-constraints.txt (line 10))
  six>=1.10.0
  urllib3<1.24,>=1.21.1

Finding the best candidates:
  found candidate atomicwrites==1.1.5 (constraint was >=1.0)
  found candidate attrs==18.1.0 (constraint was >=17.4.0)
  found candidate certifi==2018.4.16 (constraint was >=2017.4.17)
  found candidate chardet==3.0.4 (constraint was >=3.0.2,<3.1.0)
  found candidate flake8==3.5.0 (constraint was <any>)
  found candidate idna==2.7 (constraint was >=2.5,<2.8)
  found candidate kafka-python==1.4.3 (constraint was ==1.4.3)
  found candidate mccabe==0.6.1 (constraint was >=0.6.0,<0.7.0)
  found candidate more-itertools==4.2.0 (constraint was >=4.0.0)
  found candidate pluggy==0.6.0 (constraint was >=0.5,<0.7)
  found candidate py==1.5.4 (constraint was >=1.5.0,==1.5.4)

Warning: Your dependencies could not be resolved. You likely have a mismatch in your sub-dependencies.
  You can use $ pipenv install --skip-lock to bypass this mechanism, then run $ pipenv graph to inspect the situation.
  Hint: try $ pipenv lock --pre if it is a pre-release dependency.
Could not find a version that matches pycodestyle<2.4.0,==2.4.0,>=2.0.0 (from -r /var/folders/kv/y02nj9zd5ss16sn505tk6g_40000gn/T/pipenv-kbysttyf-requirements/pipenv-usrmcs08-constraints.txt (line 6))
Tried: 2.0.0, 2.0.0, 2.1.0, 2.1.0, 2.2.0, 2.2.0, 2.3.0, 2.3.0, 2.3.1, 2.3.1, 2.4.0, 2.4.0
Skipped pre-versions: 1.8.0.dev0, 1.8.0.dev0, 2.0.0a1, 2.0.0a1
There are incompatible versions in the resolved dependencies.
Warning: Your dependencies could not be resolved. You likely have a mismatch in your sub-dependencies.
  You can use $ pipenv install --skip-lock to bypass this mechanism, then run $ pipenv graph to inspect the situation.
  Hint: try $ pipenv lock --pre if it is a pre-release dependency.
Could not find a version that matches pycodestyle<2.4.0,==2.4.0,>=2.0.0 (from -r /var/folders/kv/y02nj9zd5ss16sn505tk6g_40000gn/T/pipenv-kbysttyf-requirements/pipenv-4stuouhu-constraints.txt (line 6))
Tried: 2.0.0, 2.0.0, 2.1.0, 2.1.0, 2.2.0, 2.2.0, 2.3.0, 2.3.0, 2.3.1, 2.3.1, 2.4.0, 2.4.0
Skipped pre-versions: 1.8.0.dev0, 1.8.0.dev0, 2.0.0a1, 2.0.0a1
There are incompatible versions in the resolved dependencies.
Steps to replicate

Run pipenv lock on the Pipfile above


$ pipenv --support

Pipenv version: '2018.7.1'

Pipenv location: '/Users/greysteil/code/pipenv/pipenv'

Python location: '/usr/local/opt/python/bin/python3.6'

Other Python installations in PATH:

  • 2.6: /usr/bin/python2.6

  • 2.6: /usr/bin/python2.6

  • 2.7: /usr/bin/python2.7

  • 2.7: /usr/bin/python2.7

  • 3.6: /usr/local/bin/python3.6m

  • 3.6: /usr/local/bin/python3.6

  • 3.6: /usr/local/bin/python3.6

  • 3.6.5: /usr/local/bin/python

  • 3.6.5: /usr/local/bin/python

  • 2.7.10: /usr/bin/python

  • 3.6.5: /usr/local/bin/python3

  • 3.6.5: /usr/local/bin/python3

PEP 508 Information:

{'implementation_name': 'cpython',
 'implementation_version': '3.6.5',
 'os_name': 'posix',
 'platform_machine': 'x86_64',
 'platform_python_implementation': 'CPython',
 'platform_release': '16.7.0',
 'platform_system': 'Darwin',
 'platform_version': 'Darwin Kernel Version 16.7.0: Fri Apr 27 17:59:46 PDT '
                     '2018; root:xnu-3789.73.13~1/RELEASE_X86_64',
 'python_full_version': '3.6.5',
 'python_version': '3.6',
 'sys_platform': 'darwin'}

System environment variables:

  • TERM_PROGRAM
  • PYENV_ROOT
  • TERM
  • SHELL
  • CLICOLOR
  • TMPDIR
  • Apple_PubSub_Socket_Render
  • TERM_PROGRAM_VERSION
  • TERM_SESSION_ID
  • USER
  • SSH_AUTH_SOCK
  • __CF_USER_TEXT_ENCODING
  • LSCOLORS
  • PATH
  • PWD
  • EDITOR
  • LANG
  • XPC_FLAGS
  • RBENV_SHELL
  • XPC_SERVICE_NAME
  • HOME
  • SHLVL
  • LOGNAME
  • SECURITYSESSIONID
  • OLDPWD
  • _
  • PYTHONDONTWRITEBYTECODE
  • PIP_PYTHON_PATH

Pipenv–specific environment variables:

Debug–specific environment variables:

  • PATH: /usr/local/opt/erlang@20/bin:/Users/greysteil/.pyenv/bin:/Users/greysteil/.cargo/bin:/usr/local/heroku/bin:/Users/greysteil/.rbenv/shims:/usr/local/bin:./node_modules/.bin:.bundle/binstubs:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/git/bin:/usr/local/go/bin:/Library/Frameworks/Mono.framework/Versions/Current/Commands:/Library/TeX/texbin:/usr/local/sbin
  • SHELL: /bin/bash
  • EDITOR: subl -w
  • LANG: en_GB.UTF-8
  • PWD: /Users/greysteil/code/python-test

Contents of Pipfile ('/Users/greysteil/code/python-test/Pipfile'):

[[source]]

url = "https://pypi.python.org/simple"
verify_ssl = true
name = "pypi"


[packages]

"flake8" = "*"
kafka-python = "*"
mccabe = "*"
py = "*"
pycodestyle = "*"
pyflakes = "*"
pyparsing = "*"
pytest = "*"
requests = "*"


[dev-packages]
@uranusjr
Copy link
Member

We know! See #2596. This is because the resolver does not consider all candidates properly during the locking phase. We are currently working on reworking the internals, and would love all the help we can get. (I know you have some experience in this area, and it would be awesome if you could provide some insights.)

Closing this so we can keep the conversation in one place.

@greysteil
Copy link
Contributor Author

👍 sorry, didn't spot that one! Maybe add the dependency resolution label to it?

I'll take a look through. My Python is rubbish, but I spent a couple of months working on Bundler's resolution algorithms so hopefully I can be some help. 🙂

@uranusjr
Copy link
Member

I should modify the title to be more general as well

@JasCodes
Copy link

JasCodes commented Jul 8, 2020

still happening

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants