Defino uma variável de ambiente que desejo acessar no meu aplicativo Python. Como obtenho seu valor?
Defino uma variável de ambiente que desejo acessar no meu aplicativo Python. Como obtenho seu valor?
Respostas:
Variáveis de ambiente são acessadas através do os.environ
import os
print(os.environ['HOME'])
Ou você pode ver uma lista de todas as variáveis de ambiente usando:
os.environ
Como às vezes você pode precisar ver uma lista completa!
# using get will return `None` if a key is not present rather than raise a `KeyError`
print(os.environ.get('KEY_THAT_MIGHT_EXIST'))
# os.getenv is equivalent, and can also give a default value instead of `None`
print(os.getenv('KEY_THAT_MIGHT_EXIST', default_value))
A instalação padrão do Python no Windows é C:\Python
. Se você quiser descobrir enquanto executa o python, você pode:
import sys
print(sys.prefix)
.get()
também pode receber um padrão.
Para verificar se a chave existe (retorna True
ou False
)
'HOME' in os.environ
Você também pode usar get()
ao imprimir a chave; útil se você deseja usar um padrão.
print(os.environ.get('HOME', '/home/username/'))
onde /home/username/
é o padrão
"HOME" in os.environ
ou os.environ.get('HOME')
?
"HOME" in os.environ
vs os.environ.get('HOME') is None
. Como você pode ver primeiro, é muito mais legível e confortável de se trabalhar.
A pergunta original (primeira parte) era "como verificar variáveis de ambiente em Python".
Veja como verificar se $ FOO está definido:
try:
os.environ["FOO"]
except KeyError:
print "Please set the environment variable FOO"
sys.exit(1)
"if 'FOO' not in os.environ: ..."
bloco
Você pode acessar as variáveis de ambiente usando
import os
print os.environ
Tente ver o conteúdo das variáveis de ambiente PYTHONPATH ou PYTHONHOME, talvez isso seja útil para sua segunda pergunta. No entanto, você deve esclarecer isso.
Quanto às variáveis de ambiente:
import os
print os.environ["HOME"]
Receio que você precise aprofundar um pouco mais o seu segundo ponto antes que uma resposta decente seja possível.
Na verdade, isso pode ser feito:
import os
for item, value in os.environ.items():
print('{}: {}'.format(item, value))
Ou simplesmente:
for i, j in os.environ.items():
print(i, j)
Para visualizar o valor no parâmetro:
print(os.environ['HOME'])
Ou:
print(os.environ.get('HOME')
Para definir o valor:
os.environ['HOME'] = '/new/value'
str.format
é apenas uma adição sofisticada.
>>> import os, pprint; pprint.pprint(list(os.environ.items()))
Se você planeja usar o código em um código de aplicativo da web de produção,
usando qualquer estrutura da web como Django / Flask, use projetos como envparse , usando-o, você poderá ler o valor como seu tipo definido.
from envparse import env
# will read WHITE_LIST=hello,world,hi to white_list = ["hello", "world", "hi"]
white_list = env.list("WHITE_LIST", default=[])
# Perfect for reading boolean
DEBUG = env.bool("DEBUG", default=False)
OBSERVAÇÃO: o autoenv de kennethreitz é uma ferramenta recomendada para tornar variáveis de ambiente específicas do projeto; observe que aqueles que estão usando autoenv
mantêm o .env
arquivo privado (inacessível ao público)
Há também várias ótimas bibliotecas. Envs, por exemplo, permitirá analisar objetos de suas variáveis de ambiente, que é rad. Por exemplo:
from envs import env
env('SECRET_KEY') # 'your_secret_key_here'
env('SERVER_NAMES',var_type='list') #['your', 'list', 'here']
Para django, consulte ( https://github.com/joke2k/django-environ )
$ pip install django-environ
import environ
env = environ.Env(
# set casting, default value
DEBUG=(bool, False)
)
# reading .env file
environ.Env.read_env()
# False if not in os.environ
DEBUG = env('DEBUG')
# Raises django's ImproperlyConfigured exception if SECRET_KEY not in os.environ
SECRET_KEY = env('SECRET_KEY')
Você também pode tentar isso
Primeiro, instale python-decouple
pip install python-decouple
importe-o em seu arquivo
from decouple import config
Então pegue a variável env
SECRET_KEY=config('SECRET_KEY')
Leia mais sobre a biblioteca python aqui