A fim de isolar o ambiente de desenvolvimento com o Python existem os ambientes virtuais. Dessa forma, podemos manter de maneira independente cada ambiente para cada projeto, evitando conflitos de versão entre as bibliotecas e a propria linguagem.
python -m venv <nome-do-ambiente>
Observação:
-m mod : run library module as a script (terminates option list)
- Exemplo:
python -m venv venv
Nesse caso, podemos utilizar a ferramenta pyenv
Dentro desses links temos o passo-a-passo da instalação:
- Windows: https://github.com/pyenv-win/pyenv-win
- Linux/Mac: https://github.com/pyenv/pyenv
pyenv install <numero-da-versao>
Exemplo:
pyenv install 3.11
Observação:
Pode ser que a versão desejada não está disponível. Você poderá procurar mais atualizando o seu pyenv. Se ele já estiver atualizado, realmente a versão não está disponível ainda (ou não existe)
pyenv virtualenv <numero-da-versao> <nome-do-ambiente-virtual>
Exemplo:
pyenv virtualenv 3.11 projeto-x
pyenv activate <nome-do-ambiente-virtual>
Exemplo:
pyenv activate projeto-x
São as ferramentas utilizadas para lidar com o ciclo de vida de um projeto. Porém, principalmente com relação a gestão de dependências do projeto.
Ferramenta nativa do Python para lidar com o gerenciamento de dependências do projeto. Com ele podemos instalar bibliotecas e frameworks do Pypi ou alguma outra fonte externa de projetos python
Normalmente, com projetos Python classicos, documentamos todas as nossas dependencias num arquivo .txt
.
Esse arquivo foi convencionado a chamar-se de requirements
.
- Como fazer?
Criando um arquivo
.txt
com a lista das bibliotecas usadas
biblioteca1
biblioteca2
biblioteca3
...
- Exemplo:
flask
black
flake8
Observação:
Para definir uma versão específica, basta você explicitar dessa forma: "biblioteca==1.0.0"
Alternativa mais moderna ao PIP e com mais funcionalidades, principalmente:
- Uso do
pyproject.toml
que é o manifesto do projeto. Onde guardamos os metadados da nossa aplicação. Semelhante aopackage.json
do NodeJS - Melhor gestão das dependências
- Se atualizar mais rapidamente com as novas funcionalidades da comunidade (Novas PEPs)
- Usar metadados no projet
- Precisar de uma melhor resolução de conflito
- Mais rápida
- Mais eficiente e funcional (capacidade de ignorar conflitos, por exemplo)