O macOS já vem com Python, mas usar o Python do sistema pra seus projetos é pedir problema. O pyenv resolve isso de forma elegante: instale quantas versões quiser e escolha qual usar por projeto, sem conflito.

Instalação

brew install pyenv

Depois, adicione ao seu shell (~/.zshrc ou ~/.bashrc):

export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"

Recarregue o shell:

source ~/.zshrc

Instalando versões do Python

Liste as versões disponíveis:

pyenv install --list

Instale a que quiser:

pyenv install 3.12.10

Versão global

Define qual versão usar por padrão em todo o sistema:

pyenv global 3.12.10

Versão local (por projeto)

Esse é o diferencial do pyenv. Dentro da pasta do projeto, defina uma versão específica:

cd ~/projetos/fooocus
pyenv local 3.10.14

Isso cria um arquivo .python-version na pasta. A partir daí, qualquer terminal aberto naquele diretório já usa essa versão automaticamente, sem precisar ativar nada.

python --version
# Python 3.10.14

Por que não usar o Python do brew?

O brew upgrade pode atualizar o Python e quebrar venvs existentes. Com o pyenv cada versão fica isolada — você controla quando (e se) atualiza.

Para projetos simples que sempre usam a versão mais nova, o brew resolve. Mas se você trabalha com ferramentas que exigem versão específica, o pyenv local economiza muito tempo.