pipenv fails to install jupyterlab

Created on 21 Sep 2018  路  13Comments  路  Source: pypa/pipenv

Issue description

I run pipenv install jupyterlab
It correctly installs v0.34.11
Gives this error:

Could not find a version that matches prompt-toolkit<2.0.0,<2.1.0,==1.0.15,>=1.0.15,>=2.0.0

While the tree pipenv graph shows prompt-toolkit only in two lines:

jupyterlab==0.34.11
  - jupyterlab-launcher [required: >=0.13.1,<0.14.0, installed: 0.13.1]
...
    - notebook [required: >=4.2.0, installed: 5.7.0]
...
          - prompt-toolkit [required: >=2.0.0,<2.1.0, installed: 2.0.4]
...
  - notebook [required: >=4.3.1, installed: 5.7.0]
...
        - prompt-toolkit [required: >=2.0.0,<2.1.0, installed: 2.0.4]
...
Expected result

Install without the weird version error

Actual result

see above.

Steps to replicate

create a new directory with python_version = "3.6" and run pipenv install jupyterlab


$ pipenv --support

Pipenv version: '2018.7.1'

Pipenv location: '/usr/local/Cellar/pipenv/2018.7.1/libexec/lib/python3.7/site-packages/pipenv'

Python location: '/usr/local/Cellar/pipenv/2018.7.1/libexec/bin/python3.7'

Other Python installations in PATH:

  • 2.7: /usr/local/bin/python2.7
  • 2.7: /usr/local/bin/python2.7
  • 2.7: /usr/bin/python2.7
  • 3.6: /Users/byakubchik/.local/share/virtualenvs/ml-with-python-and-keras-u1_RmhqT/bin/python3.6m
  • 3.6: /Users/byakubchik/.local/share/virtualenvs/ml-with-python-and-keras-u1_RmhqT/bin/python3.6
  • 3.6: /Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6
  • 3.6: /usr/local/bin/python3.6
  • 3.7: /Library/Frameworks/Python.framework/Versions/3.7/bin/python3.7m
  • 3.7: /Library/Frameworks/Python.framework/Versions/3.7/bin/python3.7
  • 3.7: /usr/local/bin/python3.7

  • 3.6.4: /Users/byakubchik/.local/share/virtualenvs/ml-with-python-and-keras-u1_RmhqT/bin/python

  • 2.7.15: /usr/local/bin/python
  • 2.7.10: /usr/bin/python
  • 2.7.15: /usr/local/bin/python2
  • 3.6.4: /Users/byakubchik/.local/share/virtualenvs/ml-with-python-and-keras-u1_RmhqT/bin/python3
  • 3.7.0: /Library/Frameworks/Python.framework/Versions/3.7/bin/python3
  • 3.6.4: /Library/Frameworks/Python.framework/Versions/3.6/bin/python3
  • 3.7.0: /usr/local/bin/python3

PEP 508 Information:

{'implementation_name': 'cpython',
 'implementation_version': '3.7.0',
 'os_name': 'posix',
 'platform_machine': 'x86_64',
 'platform_python_implementation': 'CPython',
 'platform_release': '17.7.0',
 'platform_system': 'Darwin',
 'platform_version': 'Darwin Kernel Version 17.7.0: Thu Jun 21 22:53:14 PDT '
                     '2018; root:xnu-4570.71.2~1/RELEASE_X86_64',
 'python_full_version': '3.7.0',
 'python_version': '3.7',
 'sys_platform': 'darwin'}

System environment variables:

  • PATH
  • TERM_PROGRAM
  • NVM_CD_FLAGS
  • PIP_PYTHON_PATH
  • SHELL
  • TERM
  • TMPDIR
  • Apple_PubSub_Socket_Render
  • TERM_PROGRAM_VERSION
  • ZSH
  • USER
  • NVM_DIR
  • SSH_AUTH_SOCK
  • __CF_USER_TEXT_ENCODING
  • VIRTUAL_ENV
  • PAGER
  • LSCOLORS
  • PIPENV_ACTIVE
  • _
  • PWD
  • LANG
  • XPC_FLAGS
  • PYTHONDONTWRITEBYTECODE
  • XPC_SERVICE_NAME
  • HOME
  • SHLVL
  • LOGNAME
  • LESS
  • LC_CTYPE
  • NVM_BIN
  • DISPLAY
  • COLORTERM

Pipenv鈥搒pecific environment variables:

  • PIPENV_ACTIVE: 1

Debug鈥搒pecific environment variables:

  • PATH: /usr/local/Cellar/pipenv/2018.7.1/libexec/tools:/Users/byakubchik/.local/share/virtualenvs/ml-with-python-and-keras-u1_RmhqT/bin:/usr/local/opt/opencv3/bin:/usr/local/Cellar/pipenv/2018.7.1/libexec/tools:/usr/local/opt/opencv3/bin:/Users/byakubchik/.nvm/versions/node/v8.11.2/bin:/Library/Frameworks/Python.framework/Versions/3.7/bin:/Library/Frameworks/Python.framework/Versions/3.6/bin:/Library/Frameworks/Python.framework/Versions/2.7/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:~/.composer/vendor/bin:/Library/TeX/texbin:/usr/local/go/bin:/opt/X11/bin
  • SHELL: /bin/zsh
  • LANG: en_US.UTF-8
  • PWD: /Users/byakubchik/Desktop/myML/ml-with-python-and-keras
  • VIRTUAL_ENV: /Users/byakubchik/.local/share/virtualenvs/ml-with-python-and-keras-u1_RmhqT

Contents of Pipfile ('/Users/byakubchik/Desktop/myML/ml-with-python-and-keras/Pipfile'):

[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"

[packages]
jupyterlab = "*"

[dev-packages]
black = "*"
pylint = "*"

[requires]
python_version = "3.6"

[pipenv]
allow_prereleases = true

Most helpful comment

Same issue as well.

As a workaround you can install ipython==6.5.0 first and after that jupyter:

pipenv install ipython==6.5.0
pipenv install jupyter

All 13 comments

I've also seen this on the latest pipenv master, unfortunately.

I have not undertaken the effort to find a minimal reproducing example so I have several occurences of prompt-toolkit.

位 pipenv graph | grep prompt
      - prompt-toolkit [required: >=1.0.15,<2.0.0, installed: 1.0.15]
    - prompt-toolkit [required: >=1.0.15,<2.0.0, installed: 1.0.15]
          - prompt-toolkit [required: >=1.0.15,<2.0.0, installed: 1.0.15]
      - prompt-toolkit [required: >=1.0.15,<2.0.0, installed: 1.0.15]
    - prompt-toolkit [required: >=1.0.15,<2.0.0, installed: 1.0.15]
  - prompt-toolkit [required: >=1.0.0,<2.0.0, installed: 1.0.15]
      - prompt-toolkit [required: >=1.0.15,<2.0.0, installed: 1.0.15]

This is after doing pip install --dev --skip-lock

@whyboris you can use pip install --skip-lock as a temporary solution.

I'm also experiencing the same issue. Skipping lock is a "solution" but not a good one if you want to be serious on how you manage your environment.

Same issue as well. Is it possible the issue is related to the recent release of ipython v7.0.0, which bumps the requirement to prompt_toolkit>=2.0.0,<2.1.0 from prompt_toolkit>=1.0.15,<2.0.0 in ipython v6.5.0? Unfortunately, I still wasn't able to resolve this by adding ipython = "==6.5.0" in my Pipfile.

Same issue for me. I guess it's impossible to be both <2.0.0 and >=2.0.0 at the same time, eh?

To clarify @odoublewen's comment, somewhere in the Jupyter ecosystem, there are conflicting requirements, where some packages require prompt_toolkit>=2.0.0 and some require prompt_toolkit<2.0.0.

The confusing thing for me is that pip install jupyter (or jupyterlab) works fine within pipenv's virtual environment.

Another, possibly cleaner workaround, is to remove jupyter / jupyterlab from your Pipfile and install manually with

pipenv shell
pip install jupyter # or jupyterlab

I have jupyter as dev dependency, so it's less important to me that pipenv manage it than most of my other packages. But I would love to see a solution to this.

Same issue as well.

As a workaround you can install ipython==6.5.0 first and after that jupyter:

pipenv install ipython==6.5.0
pipenv install jupyter

Incidentally, I get the same error trying to run pipenv install --dev ipdb. I worked around it by running pipenv install ipython==6.5.0 first as described above by wpsamurai.

Installing ipython==6.5.0 first didn't work for me.
But by using --skip-lock worked fine.

I'm using python 3.7.0 and pip 18.0

I can't even install jupyter now without having to use --skip-lock

Pipfile:

[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"

[packages]
numpy = "*"
pandas = "*"
scipy = "*"
ipython = "*"
matplotlib = "*"
jupyter = "*"

[dev-packages]

[requires]
python_version = "2.7"

$ pipenv install produces:

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 prompt-toolkit<2.0.0,<2.1.0,==1.0.15,>=1.0.0,>=1.0.4,>=2.0.0
Tried: 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.8, 0.9, 0.10, 0.11, 0.12, 0.13, 0.14, 0.15, 0.16, 0.17, 0.18, 0.19, 0.20, 0.21, 0.22, 0.23, 0.25, 0.26, 0.28, 0.30, 0.31, 0.32, 0.32, 0.32, 0.33, 0.33, 0.33, 0.34, 0.34, 0.34, 0.35, 0.35, 0.35, 0.36, 0.36, 0.36, 0.37, 0.37, 0.37, 0.38, 0.38, 0.38, 0.39, 0.39, 0.39, 0.40, 0.40, 0.40, 0.41, 0.41, 0.41, 0.42, 0.42, 0.42, 0.43, 0.43, 0.43, 0.44, 0.44, 0.44, 0.45, 0.45, 0.45, 0.46, 0.46, 0.46, 0.47, 0.47, 0.47, 0.48, 0.48, 0.48, 0.49, 0.49, 0.49, 0.50, 0.50, 0.50, 0.51, 0.51, 0.51, 0.52, 0.52, 0.52, 0.53, 0.53, 0.53, 0.54, 0.54, 0.54, 0.55, 0.55, 0.55, 0.56, 0.56, 0.56, 0.57, 0.57, 0.57, 0.58, 0.58, 0.58, 0.59, 0.59, 0.59, 0.60, 0.60, 0.60, 1.0.0, 1.0.0, 1.0.0, 1.0.1, 1.0.1, 1.0.1, 1.0.2, 1.0.2, 1.0.2, 1.0.3, 1.0.3, 1.0.3, 1.0.4, 1.0.4, 1.0.4, 1.0.5, 1.0.5, 1.0.5, 1.0.6, 1.0.6, 1.0.6, 1.0.7, 1.0.7, 1.0.7, 1.0.8, 1.0.8, 1.0.8, 1.0.9, 1.0.9, 1.0.9, 1.0.10, 1.0.10, 1.0.10, 1.0.13, 1.0.13, 1.0.13, 1.0.14, 1.0.14, 1.0.14, 1.0.15, 1.0.15, 1.0.15, 2.0.1, 2.0.1, 2.0.1, 2.0.2, 2.0.2, 2.0.2, 2.0.3, 2.0.3, 2.0.3, 2.0.4, 2.0.4, 2.0.4, 2.0.5, 2.0.5, 2.0.5
There are incompatible versions in the resolved dependencies.

EDIT: this uses pipenv 2018.7.1

This issue seems to be related to https://github.com/pypa/pipenv/issues/875, which does not seem to be completely solved (cc @vphilippon @nateprewitt @techalchemy ). I have a Pipfile with only jupyter with no constraint:

[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"

[packages]
jupyter = "*"

[dev-packages]

[requires]
python_version = "3.6"

When I run pipenv lock --verbose, I see that the best candidate for jupyter is 1.0.0, which only requires ipython>=5.0.0 and prompt-toolkit<2.0.0,>=1.0.0.

Then in round 2, it finds the best candidate for ipython to be 7.0.1 (the most recent version), which requires prompt-toolkit<2.1.0,>=2.0.0. At the end of round 2, there are the following lines:
adding ['ipython', '==7.0.1,>=4.0.0,>=5.0.0', '[]']
adding ['prompt-toolkit', '<2.0.0,<2.1.0,==1.0.15,>=1.0.0,>=2.0.0', '[]']

So it seems to be pinning the candidates and adding them as constraints, even though ipython==7.0.1 is not actually necessary for my Pipfile. Indeed, round 3 begins with the following current constraints:
ipython==7.0.1,>=4.0.0,>=5.0.0
prompt-toolkit<2.0.0,<2.1.0,==1.0.15,>=1.0.0,>=2.0.0 (1.0.15 was the best candidate found in round 2, and was subsequently pinned and added as a constraint).

So it really seems like https://github.com/pypa/pipenv/issues/875 is not fixed, unless I am missing something. Is there a reason pipenv's dependency resolution shouldn't find that, say, ipython==5.8.0 would satisfy the jupyter constraint of >=5.0.0 as well as the prompt-toolkit requirement of <2.0.0,>=1.0.0 (ipython 5.8.0 requires >=1.0.4,<2.0.0).

My configuration works just fine as a temporary workaround mentioned earlier by @wpsamurai. There is no need to use --skip-lock with it. In case of a problem you can further try pipenv lock --verbose and introduce results to the discussion.

[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"

[packages]
ipython = "<7.0.0"
jupyter = "*"

[dev-packages]

[requires]
python_version = "3.6"

Btw:

dragvs:~$ pipenv --version
pipenv, version 2018.7.1

I suppose that the version of Python may cause the problem.
In a directory, I invoked the following commands, which worked fine.

$ pyenv local 3.6.6
$ pipenv install jupyterlab

However, in another directory, I invoked the following commands, which resulted in the prompt_toolkit problem.

$ pyenv local 3.7.0
$ pipenv install jupyterlab

In a new clean venv pipenv install jupyterlab didn't produce any issue. In another messy venv I got rid of the issue with pipenv lock --clear

Was this page helpful?
0 / 5 - 0 ratings