Virtualenv with pyenv gives wrong python version
08:56 05 Jun 2019

I have pyenv installed on an up to date debian testing distribution, and have python 2.7.1 in it.

I create a virtualenv for a project with this version, but when activated it gives me the python system version (3.7).

Here is what I did:

$ pyenv virtualenv 2.7.16 my_project-2.7
Requirement already satisfied: virtualenv in /home/user/.local/lib/python2.7/site-packages (15.1.0)
You are using pip version 18.1, however version 19.1.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
Using base prefix '/usr'
New python executable in /home/user/.pyenv/versions/2.7.16/envs/my_project-2.7/bin/python
Installing setuptools, pip, wheel...
done.
Installing pip from https://bootstrap.pypa.io/get-pip.py...
Collecting pip
  Using cached https://files.pythonhosted.org/packages/5c/e0/be401c003291b56efc55aeba6a80ab790d3d4cece2778288d65323009420/pip-19.1.1-py2.py3-none-any.whl
Installing collected packages: pip
  Found existing installation: pip 19.1.1
    Uninstalling pip-19.1.1:
      Successfully uninstalled pip-19.1.1
Successfully installed pip-19.1.1

$ pyenv activate my_project-2.7 
pyenv-virtualenv: prompt changing will be removed from future release. configure `export PYENV_VIRTUALENV_DISABLE_PROMPT=1' to simulate the behavior.

$ python --version
Python 3.7.3

$ pip --version
pip 19.1.1 from /home/user/.pyenv/versions/2.7.16/envs/my_project-2.7/lib/python3.7/site-packages/pip (python 3.7)

It is strange. The virtualenv is correctly set into ~/.pyenv/version/2.7.16, but I can see that pip come from /home/user/.pyenv/versions/2.7.16/envs/my_project-2.7/lib/python3.7/

I think I missed something, or I might have some mess in my python installation, but I can't find out what this python3.7 lib is doing here.

How can I have this virtualenv created for python2.7 ?

Edit

I tried to completely remove pyenv (removing the $(pyenv root) directory), then reinstall it with pyenv-installer but it did not change anything.

I created two virtualenvs for two projects I have (the above 2.7 and one in 3.5).

$ pyenv virtualenvs
  2.7.16/envs/my_project-2.7 (created from /usr)
  3.6.8/envs/other_project-3.6 (created from /home/user/.pyenv/versions/3.6.8)
  my_project-2.7 (created from /usr)
  other_project-3.6 (created from /home/user/.pyenv/versions/3.6.8)

I think the problem could be found from this created from /usr but I don't understand what it means. Why was this virtualenv not created from the pyenv python version ? Is it at all relevant ?

It seems that when I create a 3.+ virtual env, venv is used. But on 2.7, virtualenv is used and fails.

python virtualenv pyenv