Skip to content

pyenv virtualenv installs outdated version of pip #398

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

Closed
ghost opened this issue Jul 21, 2021 · 7 comments
Closed

pyenv virtualenv installs outdated version of pip #398

ghost opened this issue Jul 21, 2021 · 7 comments
Labels
by-design third-party the problem is in third-party software

Comments

@ghost
Copy link

ghost commented Jul 21, 2021

On my machine, pyenv virtualenv always installs pip in version 19.2.3, which is too old for my purposes.

martin ~ » pyenv virtualenv 3.8.3 test                                           
Looking in links: /tmp/tmpl49cyvq9
Requirement already satisfied: setuptools in /home/martin/.pyenv/versions/3.8.3/envs/test/lib/python3.8/site-packages (41.2.0)
Requirement already satisfied: pip in /home/martin/.pyenv/versions/3.8.3/envs/test/lib/python3.8/site-packages (19.2.3)
martin ~ » PYENV_VERSION=test pip --version
pip 19.2.3 from /home/martin/.pyenv/versions/3.8.3/envs/test/lib/python3.8/site-packages/pip (python 3.8)

I don't understand where this pip version comes from. Both system and the base version 3.8.3 have newer versions of pip installed:

martin ~ » python --version
Python 3.9.6
martin ~ » pip --version                                                         
pip 20.3.4 from /usr/lib/python3.9/site-packages/pip (python 3.9)
martin ~ » PYENV_VERSION=system pip --version  
pip 20.3.4 from /usr/lib/python3.9/site-packages/pip (python 3.9)
martin ~ » PYENV_VERSION=3.8.3 pip --version
pip 21.1.3 from /home/martin/.pyenv/versions/3.8.3/lib/python3.8/site-packages/pip (python 3.8)

Is there some configuration or a cache that I am missing? Note that I cannot use PIP_VERSION to specify a newer version, see #381.

What version of pip is pyenv-virtualenv supposed to install?

@native-api
Copy link
Member

This may be related to pyenv/pyenv#1980 -- Virtualenv doesn't correctly determine when Pyenv-provided version is switched and provides a wrong cached result.

Try setting the VIRTUALENV_SEEDER envvar to pip -- this will hopefully bypass the broken caching logic.

@native-api native-api added the third-party the problem is in third-party software label Oct 7, 2021
@hacker-DOM
Copy link

I have just installed pyenv-virtualenvwrapper with Homebrew and am also running into this issue (in particular; I have pip==22.3 but when I do mkvirtualenv, I get pip==22.2.3).

The solution doesn't seem to do the trick:

~/Movies 
❯ pip --version
pip 22.3 from /Users/dteiml/.pyenv/versions/3.8.12/lib/python3.8/site-packages/pip (python 3.8)

~/Movies 
❯ export VIRTUALENV_SEEDER=pip   

~/Movies 
❯ mkvirtualenv test
created virtual environment CPython3.8.12.final.0-64 in 1956ms
  creator CPython3Posix(dest=/Users/dteiml/.virtualenvs/test, clear=False, no_vcs_ignore=False, global=False)
  seeder PipInvoke(download=False, pip=bundle, setuptools=bundle, wheel=bundle)
    added seed packages: pip==22.2.2, setuptools==62.5.0, wheel==0.37.1
  activators BashActivator,CShellActivator,FishActivator,NushellActivator,PowerShellActivator,PythonActivator
virtualenvwrapper.user_scripts creating /Users/dteiml/.virtualenvs/test/bin/predeactivate
virtualenvwrapper.user_scripts creating /Users/dteiml/.virtualenvs/test/bin/postdeactivate
virtualenvwrapper.user_scripts creating /Users/dteiml/.virtualenvs/test/bin/preactivate
virtualenvwrapper.user_scripts creating /Users/dteiml/.virtualenvs/test/bin/postactivate
virtualenvwrapper.user_scripts creating /Users/dteiml/.virtualenvs/test/bin/get_env_details
pip --ver%                                                                                                                                                                                               
~/Movies via 🐍 v3.8.12 (test) took 4s 
❯ pip --version
pip 22.2.2 from /Users/dteiml/.virtualenvs/test/lib/python3.8/site-packages/pip (python 3.8)

@moneymanolis
Copy link

moneymanolis commented Nov 24, 2022

Is there any currently working solution to this? Why was this issue closed? @native-api

@native-api
Copy link
Member

native-api commented Nov 24, 2022

Okay, looking more closely:

martin ~ » pyenv virtualenv 3.8.3 test
Looking in links: /tmp/tmpl49cyvq9
Requirement already satisfied: setuptools in /home/martin/.pyenv/versions/3.8.3/envs/test/lib/python3.8/site-packages (41.2.0)
Requirement already satisfied: pip in /home/martin/.pyenv/versions/3.8.3/envs/test/lib/python3.8/site-packages (19.2.3)
martin ~ » PYENV_VERSION=test pip --version
pip 19.2.3 from /home/martin/.pyenv/versions/3.8.3/envs/test/lib/python3.8/site-packages/pip (python 3.8)

@MartinAltmayerTNG Seems that this Pip is taken from the base installation. So upgrade the Pip there.
Or the environment already exists and pyenv virtualenv 3.8.3 test becomes a no-op.

❯ mkvirtualenv test
created virtual environment CPython3.8.12.final.0-64 in 1956ms

@hacker-DOM Since mkvirtualenv comes from Homebrew, it probably uses Homebrew's Python as base rather than Pyenv-provided Python, and takes Pip from there. So this problem is not Pyenv-related.

@moneymanolis
Copy link

moneymanolis commented Nov 24, 2022

I have the same issue.
I tried to set the PIP_VERSION but ran into the "colorize command not found problem".
Then I set GET_PIP_URL=https://bootstrap.pypa.io/get-pip.py but this didn't help either.
Also tried export VIRTUALENV_SEEDER=pip as you mentioned.

It's always installing an older pip version despite having:

pip 22.3.1 from /Users/heinzi/.pyenv/versions/3.9.0/lib/python3.9/site-packages/pip (python 3.9)

Any other ideas @native-api and thanks for your work!

@native-api
Copy link
Member

@moneymanolis Please export PYENV_DEBUG=1, run the faulty command to demonstrate the issue and attach the resulting debug trace as a gist.

@moneymanolis
Copy link

Will do!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
by-design third-party the problem is in third-party software
Projects
None yet
Development

No branches or pull requests

3 participants