Python e suas versões: pyenv parte 2
A colinha de hoje é inspirada nesse tweet aqui:
como ele funciona a respeito dos pacotes instalados via pip? tem um pip pra cada versão? os pacotes ficam disponíveis pra múltiplas versões?
— luciano ratamero (@lucianoratamero) 31 de dezembro de 2017
Então se você já instalou o pyenv e agora quer saber um pouqinho mais sobre como ele funciona assim como o Luciano, aqui vai…
O pip
Pra quem não sabe o que é o pip ele é a ferramenta recomendada para fazer a instalação de pacotes Python.
Onde vão as versões do pyenv
Dentro do diretório/pasta do pyenv temos um diretório chamado versions
e é lá que moram as versões que você instala usando o comando pyenv install
, na minha máquina eu tenho três versões do Python instaladas:
versions
├── 2.7.12
├── 3.3.0
└── 3.6.4
O pyenv e o pip
Cada nova versão do Python que você instala usando o pyenv vem com o seu próprio pip. Veja:
Listagem de pacotes instalados em cada versão
Agora, se você setar uma versão do Python usando pyenv e instalar um pacote usando o pip o que acontece? Esse pacote fica disponível para as demais versões?
Resposta rápida: Não, um pacote instalado numa versão não fica disponível noutra versão.
Vejamos, vamos usar de exemplo o pacote do Caipyra. Antes de instalá-lo temos:
Listagem de pacotes instalados em cada versão
Instalando o caipyra na versão 3.3.0
:
Instalação do pacote Caipyra na versão 3.3.0
Listando novamente os pacotes instalados em cada versão:
Listagem de pacotes instalados em cada versão
E finalmente o teste para ver se o pacote fica disponível ou não para outras versões:
Rodando o import caipyra em todas as versões
Tanto na versão 2.7.12
quando na versão 3.6.4
Python grita ModuleNotFoundErrror
, esse erro é característico quando o pacote não está instalado.
Massa né? Preparar, apontar, instalar pacotes diferentes em cada versão do Python 😜
Links
- A primeira parte dessa colinha pode ser encontrada aqui e mostra como instalar o pyenv.
- Para entender como pyenv funciona por debaixo dos panos da uma lidinha na seção How it Works no README do projeto
Agradecimentos
Obrigada Luciano Ratamero pelas dúvidas que me deram a ideia desse outro post 😉