My name is Piotr, a passionate pythonista and this is my blog!

Handle python versions and virtualenv like a pro! (including Apple M1)

Posted at — May 2, 2022

Seeing this post you already know what is a virtualenv and why it is helpful to use it.

In this post, I would like to share how to install it and navigate though projects faster and easier!

Handling different Python versions with pyenv

In this case, I recommend to already use pyenv - a simple python version management tool.

  1. Install pyenv

    brew install pyenv
  2. Install preferred Python version

    pyenv install -v 3.10.3
  3. Access all python versions:

    cd ~/.pyenv/versions/

Handling virtualenv using pyenv-virtualenv

One of the best ways which I found to handle virtualenv with different versions of Python on Apple Macbook with M1 silicon is via pyenv-virtualenv.

  1. Install pyenv-virtualenv

    brew install pyenv-virtualenv
  2. Create a virtualenv (it will always create in .pyenv/versions directory)

    pyenv virtualenv 3.10.3 my-virtual-env-3.10.3
  3. List all virtualenvs

    pyenv virtualenvs
  4. Activate virtualenv

    pyenv activate my-virtual-env-3.10.3
  5. Deactivate virtualenv

    pyenv deactivate

Not many people are aware of this nice alternative to easily navigate through many virtualenv and python projects. I have discovered (virtualenvwrapper)[] many years ago, and I’m still using it till today.

  1. Install virtualenvwrapper

    pip install virtualenvwrapper
  2. Setup environment variables in your .bashrc or .zshrc

    export WORKON_HOME=$HOME/.virtualenvs
    export PROJECT_HOME=$HOME/Devel
    export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
    export VIRTUALENVWRAPPER_VIRTUALENV=/Users/rglsk/Library/Python/3.8/bin/virtualenv
    source /Users/rglsk/Library/Python/3.8/bin/
  3. Create virtualenv (You can use any Python version from pyenv)

    mkvirtualenv mkvirtualenv -p ~/.pyenv/versions/3.10.3/bin/python3 my-virtual-env-3.10.3
  4. Activate virtualenv

    workon my-virtual-env-3.10.3
  5. Enter virtualenv and project from any location

  6. Deactivate virtualenv



I know that there are other ways like conda to set up Python virtualenv (including Apple M1).

Tools I have described are working well for me. For my local development I’m using Pycharm that is having easy integration with any Python interpreter.

I would recommend testing couple of different ways to find the one you will love and use!