Python Decouple – Como configurar suas variáveis sensíveis

Python Decouple ?

O python decouple, mais conhecido somente por decouple, serve para criarmos um arquivo com todas as configurações sensíveis do projeto como login e password do banco de dados, no Django a sua SECRET_KEY, as suas variáveis de acesso do AmazonS3 e qualquer outra informação que possa variar entre o ambiente de desenvolvimento e produção.

O decouple procura por variáveis setadas no ambiente, caso não encontre nas variáveis de ambiente ele irá procurar por um arquivo .env onde as variáveis deverão estar setadas.

Por exemplo, no Django, a variável SECRET_KEY não deve ser exposta publicamente (via git ou qualquer controle de versão), então podemos mascarar ela dentro de settings.py:

# em settings.py
SECRET_KEY = config('SECRET_KEY')

E criamos um arquivo .env na mesma pasta do manage.py

SECRET_KEY=1c&rge8ac9dq)y62z&u3=a4td=hb)d3(fc*w4rm3_=hw50tuvr

Agora este arquivo .env deverá ir para o .gitignore pois ele nunca deve ser ‘commitado’.

Com isso o decouple irá setar a variável quando o projeto rodar procurando pela variável primeiro nas variáveis de  ambiente e caso não encontre irá procurar no .env. Como este aquivo .env não irá para o controle de versão, no servidor de produção precisamos setar a variável de ambiente SECRET_KEY ou criamos um arquivo .env direto no servidor.

Instalação

Para instalar o decouple basta digitar:

# no terminal com virtualenv ativo
pip install python-decouple

E adicionar em requirements.txt:

python-decouple

 

Utilizando o Decouple

Para utilizar o decouple será necessário criar um arquivo .env na mesma pasta do manage.py (Django), e adicionar este arquivo ao .gitignore.

Para mascarar a variável DEBUG, vamos em settings.py:

# em settings.py 
from decouple import config

...

DEBUG = config('DEBUG', default=False, cast=bool)

e no arquivo .env:

# em .env
DEBUG=True

Note que no arquivo .env não pode haver espaços.

Como o decouple procura primeiro nas variáveis de ambiente, se você executar o seguinte comando:

# no terminal (linux - Mac)
DEBUG=False python manage.py runserver

Não importa o que esteja setado no .env, a variável de ambiente irá ser prioritária e o decouple não irá procurá-la no arquivo .env.

Agora com isso você poderá mascarar qualquer variável sensível de forma simples e rápida!

 

Advertisements

Author: Tiago Almeida

I am a Python / Django developer with passion about Data Science and Machine Learning.

1 thought on “Python Decouple – Como configurar suas variáveis sensíveis”

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s