PipEnv e Virtual Enviroment

Lorem lipsunm

Para facilitar o controle de dependências de uma projeto Python podemos isolar um ambiente para executar com um versão controlada do Python e dos seus pacotes
Com um Ambiente Python preparado podemos instalar o pacote do pipenv, nosso gestor de ambientes virtuais, com ele podemos:

  • Controlar os pacotes
  • Isolar para execução
  • Saber as dependências do projeto
  • Faciliitar a duplicação do ambiente para produção e desenvolvimento

Instalando pelo pip do repositório do PyPi

pip install pipenv

Gerenciar Ambiente Virtual

Para criar um ambiente virtual, usando a versão instalada e configurada como padrão do Python

pipenv install

Ou podemos definir uma versão com a diretiva --python

pipenv --python 3.6

Após a instalação podemos entrar no ambiente virtual

pipenv shell

Assim podemos instalar um pacote de maneira muito semelhante ao pip

pipenv install <nome do pacote>

Com o comando anterior o sistema cria no arquvio Pipfile na pasta atual, o arquivo contém todas as configurações do ambiente como versão do Pyhton e pacotes instalados nele
Podemos "congelar" as versões dos pacotes

pipenv lock

Gerando o arquivo Pipfile.lock com as versões dos pacotes
Para instalar um ambiente apartir de um já configurado basta executar novamente o comando em uma pasta com os Pipfile e o Pipfile.lock
No exemplo a seguir vamos usar o pacote flask, que mesmo instalado no ambiente da máquina, precisa estar no Virtual, ou somente no virtual

pipenv install flask

Programa

Com biblioteca do Flask instalada, basta criar um arquivo app.py desta maneira

import os
from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Aeeee!!! Funciona'

if __name__ == '__main__':
    port = int(os.environ.get("PORT", 5000))
    app.run(host='0.0.0.0', port=port)

Execução

Para executar a aplicação em ambiente virtual, podemos executar a chamada flask run pelo shell

pipenv shell

Ou executar direto para execução da aplicação

pipenv run python app.py

Referências

Flask - Quickstart
How to manage your Python projects with Pipenv

Comentários