As variáveis de ambiente são mecanismos poderosos para armazenar detalhes de configuração do seu projeto de desenvolvimento de forma flexível e segura. Eles armazenam pares de valores-chave de dados acessíveis por linguagens de programação como Python e mantêm essas informações ocultas de olhos curiosos. Neste tutorial, você aprenderá conceitos e técnicas essenciais para criar e gerenciar variáveis de ambiente em Python.
O que são variáveis de ambiente?
As variáveis de ambiente são pares nome-valor armazenados em algum lugar seguro em seu sistema operacional. Na maioria das vezes, eles têm a seguinte aparência:
Em Python, você pode usar essas variáveis para armazenar informações confidenciais relacionadas ao seu projeto de desenvolvimento. As informações confidenciais podem ser:
Chaves de API para acessar aplicativos de terceiros
Nome de usuário e senhas para fazer login em aplicativos por meio de scripts
Credenciais do banco de dados
qualquer coisa que possa causar um problema de segurança se for exposta acidentalmente.
Por exemplo, se você escrever um script Python que usa abertamente suas credenciais da AWS e acidentalmente enviar esse script para o GitHub, há uma chance de que partes mal-intencionadas o descubram e aumentem significativamente sua conta da AWS (sabe-se que isso acontece).
Outro benefício das variáveis de ambiente é a capacidade de configuração. Você pode ajustar facilmente as configurações (URLs de banco de dados, caminhos de arquivos) modificando as variáveis de ambiente sem alterar o código. Esse recurso é especialmente útil se você usar a mesma configuração em várias partes do seu projeto.
Então, vamos aprender como você pode trabalhar com eles em Python.
Como recuperar variáveis de ambiente no módulo os do Python
Para recuperar as variáveis de ambiente existentes no seu sistema, você pode usar o módulo os. Ele tem a função .getenv para recuperar variáveis:
A função .getenv() não retorna nada, mas podemos mudar esse comportamento. Você pode usar seu parâmetro default para retornar um valor personalizado se uma variável não existir:
A função .getenv() é o melhor método para recuperar as variáveis existentes.
No entanto, em outras fontes, você poderá ver métodos diferentes, como o atributo .environ, que retorna um dicionário contendo todas as variáveis de ambiente:
Como se trata de um dicionário, você pode usar a notação de colchetes (não recomendada) ou a função .get() para recuperar um valor.
os também tem acesso à variável de sistema mais importante, chamada PATH. PATH contém os caminhos absolutos para todos os executáveis instalados no sistema, portanto, é bastante longo:
Usando a biblioteca python-dotenv para gerenciar as variáveis de ambiente em Python de forma eficaz
Configuração de variáveis de ambiente personalizadas
Agora que sabemos como extrair variáveis existentes, vamos ver como definir variáveis personalizadas. O primeiro método é usar o dicionário os.environ:
# Create a new environment variable
os.environ["NEW_VARIABLE"]="42"# Always expects a string value
os.getenv("NEW_VARIABLE")Tecnologia
No entanto, esse método não é muito útil, pois todas as novas variáveis serão perdidas quando a sessão atual terminar.
Felizmente, há um método mais duradouro de armazenar variáveis de ambiente usando arquivos .env (pronuncia-se dot-env). Esses arquivos têm a mesma sintaxe, o que significa que funcionarão em qualquer sistema operacional. Aqui está um exemplo de arquivo .env:
A sintaxe dos arquivos .env é bastante flexível. Por exemplo, você pode definir variáveis com valores de várias linhas (devem ter aspas):
LONG_ENV="This is an environment
variable with a long message"
Tecnologia
Use caracteres de escape:
LONG_ENV="This value uses an \"escape character"Tecnologia
Você também pode adicionar comentários ao arquivo para referência futura:
# You can also add comments anywhere with a hashtag
CUSTOM_API_LINK=https://myapi.com/v1/api
SNOWFLAKE_USERNAME=bexgboost
MYSQL_DATABASE_PASSWORD=as3ndf03
Tecnologia
Também é possível usar o valor de uma variável dentro de outra usando a sintaxe ${VAR_NAME}:
FIRST_NAME=John
LAST_NAME=Doe
FULL_NAME="I am ${FIRST_NAME} ${LAST_NAME}"Tecnologia
Recuperação de variáveis de ambiente personalizadas com python-dotenv
A recuperação de variáveis personalizadas é a mesma de antes - basta usar o módulo os:
Depois de instalar o Python-dotenv, você não precisará importá-lo para o Python se estiver usando o Jupyter. A biblioteca vem com um método mágico do Jupyter que a carrega automaticamente:
# Run this anywhere in the notebook to load EVs from .env%load_ext dotenv
%dotenv
Tecnologia
Em seguida, você pode usar o módulo os novamente:
import os
os.getenv("SNOWFLAKE_USERNAME")Tecnologia
Se você criar vários arquivos .env com nomes diferentes, altere o arquivo .gitignore para que todos eles sejam excluídos da indexação do git:
# Pay attention to the asterisk *
$ echo ".env*">>.gitignore
Tecnologia
Conclusão
Neste artigo, aprendemos todos os conceitos e técnicas essenciais para que você gerencie efetivamente as variáveis de ambiente em Python. Descobrimos como recuperar variáveis existentes com o módulo Python OS e como criar valores personalizados com a biblioteca python-dotenv. Também aprendemos a escrever arquivos .env que estejam em conformidade com as práticas recomendadas.
Você também pode conferir o nosso programa Python Programming Skill Track, que o levará de iniciante a um Pythonista avançado com exercícios práticos e projetos.
Este guia conciso e fácil de seguir ajudará você a descobrir as melhores alternativas ao Anaconda e a encontrar a ferramenta certa para seus projetos Python.
Aprenda o que são escopos de variáveis e familiarize-se com a regra “LEGB”. Você também vai lidar com cenários em que poderá ver as palavras-chave globais e não locais em ação.
Este guia completo ensina os fundamentos do desenvolvimento backend com Python. Aprenda conceitos básicos, frameworks e boas práticas para começar a criar aplicações web.
Aumente o nível de suas habilidades de programação. Você aprenderá a otimizar o código, escrever funções e testes e usar as melhores práticas de engenharia de software.
As variáveis de ambiente são mecanismos poderosos para armazenar detalhes de configuração do seu projeto de desenvolvimento de forma flexível e segura. Eles armazenam pares de valores-chave de dados acessíveis por linguagens de programação como Python e mantêm essas informações ocultas de olhos curiosos. Neste tutorial, você aprenderá conceitos e técnicas essenciais para criar e gerenciar variáveis de ambiente em Python.
O que são variáveis de ambiente?
As variáveis de ambiente são pares nome-valor armazenados em algum lugar seguro em seu sistema operacional. Na maioria das vezes, eles têm a seguinte aparência:
Em Python, você pode usar essas variáveis para armazenar informações confidenciais relacionadas ao seu projeto de desenvolvimento. As informações confidenciais podem ser:
Por exemplo, se você escrever um script Python que usa abertamente suas credenciais da AWS e acidentalmente enviar esse script para o GitHub, há uma chance de que partes mal-intencionadas o descubram e aumentem significativamente sua conta da AWS (sabe-se que isso acontece).
Outro benefício das variáveis de ambiente é a capacidade de configuração. Você pode ajustar facilmente as configurações (URLs de banco de dados, caminhos de arquivos) modificando as variáveis de ambiente sem alterar o código. Esse recurso é especialmente útil se você usar a mesma configuração em várias partes do seu projeto.
Então, vamos aprender como você pode trabalhar com eles em Python.
Como recuperar variáveis de ambiente no módulo os do Python
Para recuperar as variáveis de ambiente existentes no seu sistema, você pode usar o módulo
os. Ele tem a função .getenvpara recuperar variáveis:Acima, estou recuperando o nome de usuário do sistema, que está incorporado em todos os sistemas. Há muitos outros, como o caminho de casa:
Ou o caminho para o executável do Conda:
Portanto, quando você executa os comandos
conda, é assim que o terminal sabe qual aplicativo deve ser executado.Mas o que acontece se você tentar recuperar uma variável que não existe?
A função
.getenv()não retorna nada, mas podemos mudar esse comportamento. Você pode usar seu parâmetrodefaultpara retornar um valor personalizado se uma variável não existir:A função
.getenv() é o melhor método para recuperar as variáveis existentes.No entanto, em outras fontes, você poderá ver métodos diferentes, como o atributo .environ, que retorna um dicionário contendo todas as variáveis de ambiente:
Como se trata de um dicionário, você pode usar a notação de colchetes (não recomendada) ou a função
.get()para recuperar um valor.ostambém tem acesso à variável de sistema mais importante, chamada PATH.PATHcontém os caminhos absolutos para todos os executáveis instalados no sistema, portanto, é bastante longo:Cada caminho em
PATHé separado por dois pontos. Vamos contar a duração doPATHem meu sistema:79! Nada mal.
Usando a biblioteca python-dotenv para gerenciar as variáveis de ambiente em Python de forma eficaz
Configuração de variáveis de ambiente personalizadas
Agora que sabemos como extrair variáveis existentes, vamos ver como definir variáveis personalizadas. O primeiro método é usar o dicionário
os.environ:No entanto, esse método não é muito útil, pois todas as novas variáveis serão perdidas quando a sessão atual terminar.
Felizmente, há um método mais duradouro de armazenar variáveis de ambiente usando arquivos
.env(pronuncia-se dot-env). Esses arquivos têm a mesma sintaxe, o que significa que funcionarão em qualquer sistema operacional. Aqui está um exemplo de arquivo .env:Por enquanto, ele define apenas três variáveis. Para ler esse arquivo e extrair seu conteúdo, usaremos uma biblioteca chamada
python-dotenv:Em seguida, em um script Python ou em um Jupyter Notebook, importaremos sua função
load_dotenve a chamaremos:Se você não conseguir encontrar um arquivo
.envno diretório atual, ele pesquisará todos os diretórios pai e retornará True se o encontrar.Armazenei o arquivo
.envacima em meu diretório pessoal~/.env; é por isso que oload_dotenvpode encontrá-lo.Para criar seus próprios arquivos, você pode usar o comando
touchno terminal ou usar um editor de texto como o VSCode:A sintaxe dos arquivos
.envé bastante flexível. Por exemplo, você pode definir variáveis com valores de várias linhas (devem ter aspas):Use caracteres de escape:
Você também pode adicionar comentários ao arquivo para referência futura:
Também é possível usar o valor de uma variável dentro de outra usando a sintaxe
${VAR_NAME}:Recuperação de variáveis de ambiente personalizadas com
python-dotenvA recuperação de variáveis personalizadas é a mesma de antes - basta usar o módulo
os:Certifique-se de que você ligue primeiro para
load_dotenv.Se o arquivo
.envestiver localizado em algum lugar inacessível paraload_dotenv, você poderá passar um caminho direto para ele, como abaixo:Trabalhando com arquivos .env no Jupyter
Depois de instalar o
Python-dotenv, você não precisará importá-lo para o Python se estiver usando o Jupyter. A biblioteca vem com um método mágico do Jupyter que a carrega automaticamente:Em seguida, você pode usar o módulo
osnovamente:Práticas recomendadas para o uso de variáveis de ambiente em Python
Nesta seção, listaremos algumas práticas recomendadas para garantir que as variáveis de ambiente permaneçam seguras e totalmente utilizáveis.
1. Sempre adicione os arquivos
.enva.gitignorepara que você não os envie acidentalmente para o GitHub.2. Ao definir variáveis, use nomes descritivos, todos em MAIÚSCULAS.
3. Crie um único arquivo .env para armazenar variáveis de todo o sistema que você precisa em todos os projetos.
4. Controle o escopo dos seus arquivos .env. Crie arquivos separados para diferentes partes do seu fluxo de trabalho de desenvolvimento, como abaixo:
A função
load_dotenvos reconhecerá.Se você criar vários arquivos
.envcom nomes diferentes, altere o arquivo.gitignorepara que todos eles sejam excluídos da indexação do git:Conclusão
Neste artigo, aprendemos todos os conceitos e técnicas essenciais para que você gerencie efetivamente as variáveis de ambiente em Python. Descobrimos como recuperar variáveis existentes com o módulo Python OS e como criar valores personalizados com a biblioteca
python-dotenv. Também aprendemos a escrever arquivos.envque estejam em conformidade com as práticas recomendadas.Se você quiser saber mais sobre engenharia de software Python, confira nosso curso, Princípios de engenharia de software em Python.
Você também pode conferir o nosso programa Python Programming Skill Track, que o levará de iniciante a um Pythonista avançado com exercícios práticos e projetos.