Python uygulamamda erişmek istediğim bir ortam değişkeni ayarladım. Değerini nasıl alabilirim?
Python uygulamamda erişmek istediğim bir ortam değişkeni ayarladım. Değerini nasıl alabilirim?
Yanıtlar:
Çevre değişkenlerine os.environ aracılığıyla erişilir
import os
print(os.environ['HOME'])
Veya aşağıdakileri kullanarak tüm ortam değişkenlerinin bir listesini görebilirsiniz:
os.environ
Bazen tam bir liste görmeniz gerekebilir!
# 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))
Windows'da Python varsayılan yüklemesiC:\Python
. Python çalıştırırken öğrenmek istiyorsanız şunları yapabilirsiniz:
import sys
print(sys.prefix)
.get()
varsayılan olarak da verilebilir.
Anahtarın var olup olmadığını kontrol etmek ( True
veya döndürür False
)
'HOME' in os.environ
get()
Anahtarı yazdırırken de kullanabilirsiniz ; bir varsayılan kullanmak istiyorsanız kullanışlıdır.
print(os.environ.get('HOME', '/home/username/'))
/home/username/
varsayılan nerede
"HOME" in os.environ
ya da os.environ.get('HOME')
?
"HOME" in os.environ
vs woud olabilir os.environ.get('HOME') is None
. İlk gördüğünüz gibi çok daha okunaklı ve çalışmak rahat.
Orijinal soru (ilk bölüm) "Python'daki ortam değişkenlerinin nasıl kontrol edileceği" idi.
$ FOO'nun ayarlanıp ayarlanmadığını şu şekilde kontrol edebilirsiniz:
try:
os.environ["FOO"]
except KeyError:
print "Please set the environment variable FOO"
sys.exit(1)
"if 'FOO' not in os.environ: ..."
bloktan daha az okunabilir görünüyor
Ortam değişkenlerine aşağıdakileri kullanarak erişebilirsiniz:
import os
print os.environ
PYTHONPATH veya PYTHONHOME ortam değişkenlerinin içeriğini görmeye çalışın, belki bu ikinci sorunuz için yardımcı olacaktır. Ancak açıklığa kavuşturmalısınız.
Ortam değişkenlerine gelince:
import os
print os.environ["HOME"]
Korkarım, iyi bir cevap mümkün olmadan önce ikinci noktanızı biraz daha fazla dışarı çıkarmak zorunda kalacaksınız.
Aslında şu şekilde yapılabilir:
import os
for item, value in os.environ.items():
print('{}: {}'.format(item, value))
Ya da sadece:
for i, j in os.environ.items():
print(i, j)
Parametredeki değeri görüntülemek için:
print(os.environ['HOME'])
Veya:
print(os.environ.get('HOME')
Değeri ayarlamak için:
os.environ['HOME'] = '/new/value'
str.format
sadece süslü bir ektir.
>>> import os, pprint; pprint.pprint(list(os.environ.items()))
Kodu bir üretim web uygulaması kodunda kullanmayı planlıyorsanız,
Django / Flask gibi herhangi bir web çerçevesini kullanarak, envparse gibi projeleri kullanın , bunu kullanarak değeri tanımladığınız tür olarak okuyabilirsiniz.
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)
NOT: kennethreitz en autoenv kullanarak olanlar olduğunu lütfen not proje belirli ortam değişkenleri yapmak için önerilen bir araçtır autoenv
tutmak lütfen .env
özel (halka erişilemez) dosyası
Bir çok harika kütüphane de var. Örneğin Envs , nesneleri ortam değişkenlerinizden (rad. Örneğin:
from envs import env
env('SECRET_KEY') # 'your_secret_key_here'
env('SERVER_NAMES',var_type='list') #['your', 'list', 'here']
Django için bkz. ( 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')
Bunu da deneyebilirsin
İlk olarak, yükleyin python-decouple
pip install python-decouple
onu dosyanıza içe aktar
from decouple import config
Sonra env değişkenini alın
SECRET_KEY=config('SECRET_KEY')
Python kütüphanesi hakkında daha fazla bilgiyi buradan edinebilirsiniz