Skip to content

Pyenv

Managing Multiple Python Versions With pyenv

Linux (Debian)

Install dependencies
apt install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev python3-openssl
Install pyenv
curl https://pyenv.run | bash
Add to ~/.bashrc
export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
Echo to .bashrc
echo $'export PATH="$HOME/.pyenv/bin:$PATH"\neval "$(pyenv init -)"\neval "$(pyenv virtualenv-init -)"' >> ~/.bashrc
Unset pyenv shell
pyenv shell --unset

Windows

pyenv-win / pyenv-win

Install pyenv-win
Invoke-WebRequest -UseBasicParsing `
-Uri "https://raw.githubusercontent.com/pyenv-win/pyenv-win/master/pyenv-win/install-pyenv-win.ps1" `
-OutFile "./install-pyenv-win.ps1";
&"./install-pyenv-win.ps1"

pyenv-win / pyenv-win-venv

Install pyenv-win-venv
Invoke-WebRequest -UseBasicParsing `
-Uri "https://raw.githubusercontent.com/pyenv-win/pyenv-win-venv/main/bin/install-pyenv-win-venv.ps1" `
-OutFile ".\install-pyenv-win-venv.ps1";
&".\install-pyenv-win-venv.ps1"
Add pyenv-win-venv binary to PATH variable
[System.Environment]::SetEnvironmentVariable('path', $env:USERPROFILE + "\.pyenv-win-venv\bin;"  + [System.Environment]::GetEnvironmentVariable('path', "User"),"User")

Env automatic activation using .python-version file

Add to powershell profile
Add-Content -Path $profile -Value "pyenv-venv init"

Version Hierarchy

pyramid