Ok, vamos detalhar como usar o `pyenv` para gerenciar suas versões do Python. O `pyenv` é uma ferramenta poderosa, especialmente no macOS e Linux, para instalar e alternar entre múltiplos interpretadores Python.
**1. Instalação**
O processo de instalação varia ligeiramente dependendo do seu sistema operacional.
* **macOS (usando Homebrew - Recomendado):**
```bash
brew update
brew install pyenv
```
Após a instalação, você precisa adicionar o `pyenv` ao seu perfil de shell (como `~/.zshrc`, `~/.bash_profile` ou `~/.bashrc`). A saída do comando `brew install pyenv` geralmente fornecerá as linhas exatas a serem adicionadas. Normalmente, é algo assim:
```bash
# Adicione estas linhas ao seu arquivo de perfil de shell (~/.zshrc, ~/.bash_profile, etc.)
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init --path)"
eval "$(pyenv init -)" # Para shims
```
Depois de adicionar essas linhas, reinicie seu terminal ou execute `source ~/.seu_perfil_de_shell` (por exemplo, `source ~/.zshrc`).
* **Linux (usando pyenv-installer):**
```bash
curl https://pyenv.run | bash
```
Este script instalará o `pyenv` e seus plugins. Ele também informará as linhas que você precisa adicionar ao seu perfil de shell (`~/.bashrc`, `~/.zshrc`, etc.) para configurar seu ambiente de shell. Adicione essas linhas e reinicie seu terminal ou "source" seu arquivo de perfil.
* **Windows:** O `pyenv` é projetado principalmente para sistemas tipo Unix. Para Windows, a ferramenta recomendada é o `pyenv-win`. Você pode encontrar as instruções de instalação em sua página do GitHub: [https://github.com/pyenv-win/pyenv-win](https://github.com/pyenv-win/pyenv-win).
**Importante:** Após a instalação e configuração do seu perfil de shell, feche e reabra seu terminal ou execute o comando `source` para o seu arquivo de perfil para garantir que o `pyenv` seja carregado corretamente. Você pode verificar executando `pyenv --version`.
**2. Comandos Chave do `pyenv`**
Aqui estão os comandos mais comuns que você usará:
* **`pyenv install --list`**: Lista todas as versões do Python disponíveis que o `pyenv` pode instalar. Isso inclui CPython, Miniconda, Anaconda, PyPy, etc.
```bash
pyenv install --list
```
* **`pyenv install <version>`**: Instala uma versão específica do Python. Substitua `<version>` por um número de versão da lista (por exemplo, `3.9.10`, `3.10.4`, `2.7.18`). Isso pode levar algum tempo, pois geralmente compila o Python a partir do código-fonte. Você pode precisar de bibliotecas de desenvolvimento instaladas em seu sistema primeiro (verifique a documentação do pyenv para pré-requisitos para o seu SO).
```bash
pyenv install 3.9.10
pyenv install 3.10.4
```
* **`pyenv versions`**: Lista todas as versões do Python atualmente instaladas pelo `pyenv`. Também mostra qual versão está atualmente ativa com um asterisco (`*`).
```bash
pyenv versions
```
* **`pyenv global <version>`**: Define a versão global do Python para o seu usuário. Esta é a versão padrão usada em todos os lugares, a menos que seja substituída por uma configuração local ou de shell.
```bash
pyenv global 3.10.4 # Define 3.10.4 como o padrão globalmente
```
* **`pyenv local <version>`**: Define a versão do Python para o diretório atual e seus subdiretórios. Esta é a maneira mais comum de gerenciar versões específicas do projeto. O `pyenv` cria um arquivo `.python-version` no diretório atual para lembrar essa configuração.
```bash
cd my_project_directory
pyenv local 3.9.10 # Define 3.9.10 para este projeto
```
* **`pyenv shell <version>`**: Define a versão do Python apenas para a sessão de shell atual. Essa configuração tem precedência sobre `local` e `global`, mas é temporária.
```bash
pyenv shell 3.8.12 # Usa 3.8.12 apenas para esta sessão de terminal
```
* **`pyenv uninstall <version>`**: Desinstala uma versão específica do Python.
```bash
pyenv uninstall 3.9.10
```
**3. Como o `pyenv` Funciona (Shims)**
O `pyenv` funciona inserindo um diretório de "shims" no início do seu `PATH`. Quando você executa um comando como `python`, `pip`, etc., seu shell encontra o shim do `pyenv` primeiro. O shim então descobre qual versão do Python deve estar ativa com base nas configurações `shell`, `local` e `global`, e redireciona o comando para o executável Python correto instalado pelo `pyenv`.
**4. Usando `pyenv` com Ambientes Virtuais (`venv`)**
Embora o `pyenv` gerencie a _versão do interpretador_ Python, ainda é uma boa prática usar ambientes virtuais (`venv` ou `virtualenv`) para gerenciar as _dependências de pacotes_ específicas do projeto.
Aqui está um fluxo de trabalho típico:
1. **Instale a versão do Python com `pyenv`:**
```bash
pyenv install 3.9.10
```
1. **Navegue até o diretório do seu projeto:**
```bash
cd ~/my_python_project
```
1. **Defina a versão local do Python para o projeto:**
```bash
pyenv local 3.9.10
```
Agora, se você executar `python --version` neste diretório, ele deverá mostrar `Python 3.9.10`.
1. **Crie um ambiente virtual usando a versão selecionada do Python:**
```bash
python -m venv .venv
```
(Isso cria um ambiente virtual chamado `.venv` dentro do diretório do seu projeto usando o Python 3.9.10 gerenciado pelo `pyenv`).
1. **Ative o ambiente virtual:**
```bash
source .venv/bin/activate
```
(Seu prompt geralmente mudará para indicar o ambiente ativo, por exemplo, `(.venv) …`)
1. **Instale as dependências do projeto:**
```bash
pip install -r requirements.txt
```
Esses pacotes serão instalados no ambiente `.venv`, isolados de outros projetos e do seu Python do sistema.
1. **Desative o ambiente quando terminar:**
```bash
deactivate
```
Ao combinar `pyenv` (para a versão do interpretador) e `venv` (para isolamento de pacotes), você obtém controle robusto sobre seus ambientes de desenvolvimento Python.