top of page

Configuração de multiplos ambientes no Python (pyenv, pip, venv, pipx e poetry)

  • Foto do escritor: Rodrigo Saito
    Rodrigo Saito
  • há 12 minutos
  • 7 min de leitura

Fala pessoal, tudo bem?


Quando falamos de multiplos ambientes, devemos sempre pensar que os projetos irão ser criados em tempos diferentes. A medida que o tempo vai passando, em paralelo, teremos versões de linguagens de programação que irão sendo atualizadas (e é exatamente o que acontece com o Python)


Por isso, precisamos de ambientes de versões diferentes para poder suportar multiplos ambientes ou projetos. Cada versão consegue trabalhar com diferentes bibliotecas e versões de bibliotecas, a qual cada projeto irá necessitar.


E porque devemos nos preocupar com o ambiente de dados, já que Python é uma linguagem de programação? Esse assunto não deveria ser interessante somente para os Dev's?


Infelizmente não. Grande parte das ferramentas para qualquer area de dados atualmente, necessita de alguma linguagem de programação e Python é uma das principais atualmente.


Por isso, vamos aprender a utilizar esse conjunto de features e ferramentas, que podem ajudar muito a organizar melhor os ambientes em que estamos trabalhando.


O conjunto que será visto terá a seguinte estrutura:


ree


De modo geral, teremos:


Pyenv --> serve para voce fazer o gerenciamento de ambiente de multiplas versões de python dentro de uma única máquina. (Geralmente essa gestão de diferentes ambientes é feito por separação de pastas)


pip + vEnv -> cuida das instalações de pacotes e versões do Python e suas bibliotecas e da divisões virtuais, fazendo a separação e isolamento das bibliotecas e instalações de cada um dos projetos a serem criados.


pipX --> instalação de pacotes e bibliotecas que serão instaladas globalmente em sua máquina, agindo em todos os ambientes dos diferentes projetos.


poetry -->é a ferramenta que substitui pip + venv, simplifcando as tarefas do dia a dia.



Instalação do Pyenv



É uma biblioteca que facilita trabalharmos com diferentes versões do Python para cada projeto em que estivermos trabalhando. Ele basicamente trabalha com diferentes variáveis de ambiente para que cada projeto.


Para o Windows, teremos que usar pyenv-win, que pode ser visto em: https://github.com/pyenv-win/pyenv-win


Para instalar o pyenv-win no PowerShell, abra um interpretador de comando PS e digite/copie a seguinte linha de comando:


Invoke-WebRequest -UseBasicParsing -Uri "https://raw.githubusercontent.com/pyenv-win/pyenv-win/master/pyenv-win/install-pyenv-win.ps1" -OutFile "./install-pyenv-win.ps1"; &"./install-pyenv-win.ps1"

Provavelmente o erro a seguir irá acontecer:


ree

Execute o seguinte comando para poder executar em sua máquina:


Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser 
ree

Execute novamente o comando anterior:


Invoke-WebRequest -UseBasicParsing -Uri "https://raw.githubusercontent.com/pyenv-win/pyenv-win/master/pyenv-win/install-pyenv-win.ps1" -OutFile "./install-pyenv-win.ps1"; &"./install-pyenv-win.ps1"

O pyenv-win foi instalado em sua máquina:


ree

Vamos verificar se o interpretador está trabalhjando com o pyenv. Feche o terminal e abra o git bash:


pyenv --version

O resultado será parecido como o abaixo:


ree

Isso aconteceu pois as variaveis de ambiente já estão configuradas. Dentro das variáveis de ambiente, veja as seguintes configurações das variáveis PYENV, PYENV_HOME e PYENV-ROOT, que devem estar apontadas para dentro da instalação do pyenv-win:


ree


Veja que em PATH, há também 2 caminhos que foram adicionados e que estão em cima para serem prioridades na procura dos caminhos:


ree


Configuração de uma versão global de python e outras versões para cada projeto


Para isso será necessário fazer a criação de uma estrutura de pastas para simularmos essa situação. Dentro da sua pasta de usuários, crie uma pasta chamada PyProjects no prompt de comando:


mkdir PyProjects
ree

Entre na pasta criada:

cd PyProjects
ree

Vamos fazer a criação de 3 pastas para 3 diferentes projetos:


mkdir PyPrj_Pandas
mkdir PyPrj_numPy
mkdir PyPrj_Streamlit
ree

Há um comando para verificar quais são as versões de Python instaladas no Pyenv:


pyenv versions
ree

No meu caso, não apareceu nenhuma versão configurada:


Vamos fazer a instalação das versões do Python que precisamos:


pyenv install 3.12.1
ree

pyenv install 3.12.5
ree

pyenv install 3.12.7
ree

Veja novamente as verões de python que estão instaladas em sua máquina:


pyenv versions
ree

Instale a ultima versão disponível, que será a versão Global (até o momento desse blog, é a 3.13.9)


ree


Configuração das utilizações de versão do Python


Versão Global


Vamos deixar a versão mais atual sendo a versão global.


pyenv global 3.13.9
ree

Veja a versão corrente a qual ele atribuiu:


python --version
ree


Versão Específica para cada projeto


Vamos configurar para cada projeto, uma versão específica a ser instalada.


Para isso, entre na pasta do projeto numPy, com o seguinte comando:


cd PyPrj_numPy
ree

Vamos atribuir especificamente para este projeto a versao 3.12.1, digitando o seguinte comando:


pyenv local 3.12.1
ree

Veja que dentro da pasta foi criado um arquivo chamado ".python-version", a qual tem a versão que atribuimos para este projeto.


ree

Agora, vamos fazer a configuração para as outras pastas. Digite o comando abaixo para voltar a pasta anterior:

cd ..
cd PyPrj_Pandas
ree

Configure a próxima versão do Python que esse projeto irá utilizar:


pyenv local 3.12.5

ree

Vá para a ultima pasta dos projetos:


cd ..
cd PyPrj_Streamlit
ree

Configure a próxima versão do Python que esse projeto irá utilizar:


pyenv local 3.12.7
ree

Dessa forma, cada um dos projetos estão utilizando uma versão diferente do Python.


Precisamos tomar cuidado com a versão e com as dependencias do código. Cada projeto terá suas próprias bibliotecas, assim como suas dependencias de outros pacotes.


De o comando abaixo para saber o que voce tem dependencia de pacotes no Python:


pip list

ree

Vamos fazer a instalação das bibliotecas que precisamos instalar nos nosso projetos:


pip install pandas
pip install numpy
pip install streamlit
ree

ree

Veja novamente com o pip list


pip list
ree

Ao invés de termos instalado as bibliotecas para cada projeto específico, flizemos a instalação geral para todos os projetos.


Vamos tentar fazer a desinstalação das bibliotecas principais:


pip uninstall pandas
pip uninstall numpy
pip uninstall streamlit

ree

Na teoria, deveria-se tirar todos os pacotes instalados. Dê o comando pip list para verificar:


pip list
ree

Mesmo fazendo a desinstalação dos 3 pacotes, há várias dependencias que não foram desinstalados. Para fazer a desinslação da seguinte forma:


pip freeze

Faça a desinstalação com o comando abaixo, via git bash:


ree

Digite o comando para fazer a desinstalação de todos os pacotes

pip freeze | grep -v "^-e" | xargs pip uninstall -y
ree

Veja novamente a lista de dependencias:


pip list
ree

Pronto, seu pip list estará limpo novamente.


Agora, antes de fazer a instalação de qualquer pacote, vamos criar o ambiente virtual:


Dentro da pasta do Projeto Pandas:

cd PyPrj_Pandas

Digite o seguinte comando:

python -m venv .venv
ree

Digite o comando:

ls -al

Perceba que foi criado uma pasta dentro da pasta corrente chamada .venv (que é o nome do ambient evirtual que voce deu)


ree

Entre dentro da pasta .venv e veja os arquivos que foram criados:


cd .venv
ls
ree

Volte a pasta anterior com o comando:

cd ..

Para ativar o ambiente virtual:

source .venv/Scripts/activate

ree

Perceba que há um ambiente ativo (.venv)


Faça a instalação do pandas nesse ambiente virtual:


pip install pandas
ree

Para sair desse ambiente e pasta, dê os comandos:


deactivate
cd ..
ree

Vamos fazer a instalação de bibliotecas especificas para os outros projetos:


cd PyPrj_numPy
python -m venv .venv
source .venv/Script/activate
ree

Faça a instalação do numpy:

pip install numpy
ree

Para sair desse ambiente e pasta, dê os comandos:

deactivate
cd ..
ree

Vamos fazer a criação do ultimo ambiente e a instalação do streamlit


cd PyPrj_Stramlit
python -m venv .venv
source .venv/Script/activate
ree

Vamos fazer a instalação do último pacote:


pip install streamlit
ree

Desative o ambiente e volte a pasta anterior:


ree

Testando os ambientes virtuais


Entre em um dos ambientes e veja as bibliotecas instaladas e a versao do Python que está sendo utilizado:


cd PyPrj_Pandas
source .venv/Script/activate
python --version
pip list
ree

Vamos entrar em outro ambiente virtual. Saia do que voce está:

deactivate
cd ..
ree

Entre em outro projeto, o PyPrj_numpy:


cd PyPrj_Pandas
source .venv/Script/activate
python --version
pip list
ree

Pipx


A ferramenta pip, sendo do próprio python não tem a necessidade de ser instalada. É muito estável e utilizado por milhares de pessoas. Porém uma das grandes desvantagens é a demora de atualizações que o pip tem.

O pipx consegue criar ambientes virtuais por usuários. Se a sua máquina tem vários usuários, é uma boa forma de gerenciar os pacotes por usuários. O usuário x sempre vai ter tais bibliotecas instaladas enquanto o usuário y terão outras.

O pipx será praticamente a sua única biblioteca instalada de forma global.


Para fazer a instalação do pipx de forma global, sem estar conectado em nenhum ambiente, digite:

deactivate
cd ..
pip install pipx
pip list
ree

A documentação do pipx pode ser encontrada em https://pipx.pypa.io


Podemos fazer a instalação de 2 bibliotecas globais. Dessa forma todos os projetos poderão utilizar essas 2 bibliotecas:

pipx install poetry
pipx install ipython
ree

O python da forma tradicional consegue interagir em modo terminal de forma simples:

python -i
ree

Digite exit para sair do modo interativo.


O ipyhton consegue gravar todas as saídas em modo terminal (com comandos mágicos começados por % ou !) e tem melhor visualização na saída do terminal como se fossem celulas (isso deu origem ao jupyter notebook):

ipython -i
ree

Digite exit para sair do modo interativo.


Poetry


Ele tem como objetivo gerenciar melhor as dependencias de pacotes. Mais detalhes pode ser visto em python-poetry.org.


Com o Poetry, ele vai mostrar somente as dependencias da qual voce instalou, segregando das dependencias de dependencias.


Para que o poetry comece a gerenciar as dependencias, digite o comando:

poetry config virtualenvs.in-project true

Talvez seja necessário voce colocar o caminho em que ele faz a instalação no path do seu Windows. Este será o path:


ree

Adicione dentro do Path das variáveis de ambiente do usuário:


ree

Feche o GitBash e abra novamente. Teste novamente dentro da pasta PyProjects:

cd PyProjects
poetry
ree

Digite o comando novamente para o Poetry começar a gerenciar as dependencias:

poetry config virtualenvs.in-project true
ree

Para criar o novo Projeto Django com o Poetry, digite o seguinte comando:

poetry new PyPrj_Django
ree

Entre na nova pasta criada PyPrj_Django, e veja que ele já criou uma série de arquivos.


ree

Vamos configurar para que esse novo projeto utilize uma versao especifica do Python:


pyenv versions
pyenv local 3.13.9
ree

Veja que ele criou o arquivo oculto .python-version, com a versão do python que voce determinou:


ree

Digite o seguinte comando para que o Poetry use essa versao do ambiente do Python:

poetry env use 3.13.9

ree

Para fazer a instalação do Django ensse ambiente, digite o seguinte comando:

poetry add django
ree

Podemos fazer a abertura do arquivo pyproject.toml

Digite "code ." e o VS Studio irá abrir a estrutura de pastas com o arquivo a ser verificado.


code .
ree

Para remover essa biblioteca, digite o comando:

poetry remove django

ree

Dessa forma, conseguimo organizar melhor nosso multiplos projetos em Python.


Esperamos que tenham gostado!


obrigado,





 
 
 

Comentários


Nunca perca um post. Assine agora!

Caso queira receber noticias sobre o blog, assine!

© 2022 por datalib

  • Ícone do Facebook Cinza
  • Ícone do Linkedin Cinza
bottom of page