Managing Python on macOS Big Sur

When Apple releases a new version of macOS it always takes a few months for everything to catchup, following my last blog post where I mentioned that I was having problems installing Python on macOS Big Surwhich meant that my preferred method of installing and managing Python using , which is documented in this blog post, didn't work out of the box — and the workarounds suggested workarounds on GitHub made my shell really slow.

Luckily, I noticed that there was an update to both Python and when I ran today so decided to give another try, and it worked as expected.

First I manually installed some prerequisites suggested on various GitHub issues, just to be on the safe side:

$ brew install zlib sqlite bzip2 libiconv libzip

Next up you can either install or upgrade to the latest version of , which during writing is :

$ brew install pyenv

If like me, you need to upgrade, then you can run:

$ brew upgrade pyenv

Once the latest version has been installed, run the following commands to install the latest stable version of Python, which is currently 3.9.1:

$ pyenv install 3.9.1
$ pyenv global 3.9.1
$ pyenv version

Once installed, run the following command to make sure that the managed version of Python is picked up:

Update: 11/06/2021; the command below has been updated to include a change to how the command works.

$ echo -e $'if command -v pyenv 1>/dev/null 2>&1; then\\n  export PYENV_ROOT="$HOME/.pyenv"\\n  export PATH="$PYENV_ROOT/bin:$PATH"\\n  eval "$(pyenv init --path)"\\n  eval "$(pyenv init -)"\\nfi' >> ~/.zshrc

Open a new shell and run:

$ python --version
$ which python

This should return something like the following:

Checking the version of Python and its part

The final step is to make sure that is up-to-date, to do this run:

$ pip install --upgrade pip

This fixed a few issues I had when I ran:

$ pip install --user ansible

Geek, Lover Of Shiny Things and Grump.