Using pyenv and pyenv-virtualenv to install Python and create a virtual environment on MacOS
Posted on Sat 29 January 2022 in Development
This is an update version of my previous tutorial Install Python with pyenv and pyenv-virtualenv create virtual environment with specific Python version. In this version I will show how to install Python 3.10.0 and create a virtual environment with that version.
To manage my Python versions I'm using using pyenv and pyenv-virtualenv and once they are correctly configured, it's very easy to install a new Python version.
Make sure you have the required packages installed
First of all make sure you have all the latest packages installed (I'm using Homebrew for MacOS):
brew update
brew install pyenv
brew install pyenv-virtualenv
once installed you should see the latest version:
pyenv --version
pyenv 2.2.2
Configure pyenv and pyenv-virtualenv
To be able to use pyenv
and pyenv-virtualenv
you need to write this basic configuration in your ~/.bashrc
(or ~/.zshrc
if you are using zsh):
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init --path)"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
Install Python 3.10.0
To install Python 3.10.0 you only need pyenv install 3.10.0
:
pyenv install 3.10.0
python-build: use [email protected] from homebrew
python-build: use readline from homebrew
Downloading Python-3.10.0.tar.xz...
-> https://www.python.org/ftp/python/3.10.0/Python-3.10.0.tar.xz
Installing Python-3.10.0...
patching file aclocal.m4
patching file configure
Hunk #5 succeeded at 10537 (offset -15 lines).
python-build: use readline from homebrew
python-build: use zlib from xcode sdk
Installed Python-3.10.0 to /Users/andrea/.pyenv/versions/3.10.0
Set Python 3.10.0 as the local version
Now that the version you want has been installed, you need to tell pyenv you want to use it:
pyenv local 3.10.0
pyenv which python
which will show you this:
/Users/andrea/.pyenv/versions/3.10.0/bin/python
Create a virtual environment using Python from pyenv
To create a virtual environment named my-310-python
using Python 3.10.0 version, you just need this command:
pyenv virtualenv 3.10.0 my-310-python
Verify that the virtual environment has been created:
pyenv virtualenvs
3.10.0/envs/my-310-python (created from /Users/andrea/.pyenv/versions/3.10.0)
Test and automatically activate the virtual environment
Create a test folder:
mkdir test-310
Create a .python-version
file in the test folder:
echo my-310-python > test-310/.python-version
Now if you enter the folder (cd test-310
), the virtual environment will be automatically activated:
cd test-310
(my-310-python) ➜ test-310
At this point you can verify that the virtual environment is working, by using python --version
:
(my-310-python) ➜ test-310 python --version
Python 3.10.0