Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why does `python` point to my system's default python interpreter, instead of my `pyenv` python interpreter?

python points to my system's default python interpreter, instead of my pyenv python interpreter.

I created the python virtual environment and activated it as follows:

pyenv virtualenv 3.8.12 test3
pyenv activate test3

Then, running python gives me a python 3.7 interpreter (which is my system's default python interpreter), instead of 3.8.12. Why?


Full command outputs:

root@server:/home/code-base/f# pyenv virtualenv 3.8.12 test3
Looking in links: /tmp/tmp1yp95sav
Requirement already satisfied: setuptools in /root/.pyenv/versions/3.8.12/envs/test3/lib/python3.8/site-packages (56.0.0)
Requirement already satisfied: pip in /root/.pyenv/versions/3.8.12/envs/test3/lib/python3.8/site-packages (21.1.1)

root@server:/home/code-base/f# pyenv activate test3
pyenv-virtualenv: prompt changing will be removed from future release. configure `export PYENV_VIRTUALENV_DISABLE_PROMPT=1' to simulate the behavior.

(test3) root@server:/home/code-base/f# python
Python 3.7.11 (default, Jul 27 2021, 14:32:16)
[GCC 7.5.0] :: Anaconda, Inc. on linux

Additionally:

  • pyenv which python returns /root/.pyenv/versions/test3/bin/python
  • command -v python returns /opt/conda/bin/python
  • $PATH inside my virtualenv: /root/.pyenv/plugins/pyenv-virtualenv/shims:/root/.pyenv/bin:/opt/conda/bin:/app/python/bin:/opt/conda/bin:/usr/local/mpi/bin:/usr/local/nvidia/bin:/usr/local/cuda/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/root/.local/bin
  • ls -la /root/.pyenv/plugins/pyenv-virtualenv/shims contains two folders: activate and deactivate.
like image 769
Franck Dernoncourt Avatar asked Oct 12 '25 18:10

Franck Dernoncourt


1 Answers

  1. If your ~/.profile sources ~/.bashrc (Debian, Ubuntu, Mint):
sed -Ei -e '/^([^#]|$)/ {a \
export PYENV_ROOT="$HOME/.pyenv"
a \
export PATH="$PYENV_ROOT/bin:$PATH"
a \
' -e ':a' -e '$!{n;ba};}' ~/.profile
echo 'eval "$(pyenv init --path)"' >>~/.profile

echo 'eval "$(pyenv init -)"' >> ~/.bashrc

Restart your login session for the changes to profile files to take effect. E.g. if you're in a GUI session, you need to fully log out and log back in.

  1. Install version of python you need.
pyenv install 3.8.12
  1. Activate it on your application directory
pyenv local 3.8.12
  1. Then locate python version
$ pyenv which python
/home/xirehat/.pyenv/versions/3.8.12/bin/python