Saya menetapkan variabel lingkungan yang ingin saya akses di aplikasi Python saya. Bagaimana saya mendapatkan nilainya?
Saya menetapkan variabel lingkungan yang ingin saya akses di aplikasi Python saya. Bagaimana saya mendapatkan nilainya?
Jawaban:
Variabel lingkungan diakses melalui os.environment
import os
print(os.environ['HOME'])
Atau Anda dapat melihat daftar semua variabel lingkungan menggunakan:
os.environ
Karena terkadang Anda mungkin perlu melihat daftar lengkap!
# 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))
Instalasi default python pada Windows adalah C:\Python
. Jika Anda ingin mencari tahu saat menjalankan python, Anda dapat melakukannya:
import sys
print(sys.prefix)
.get()
bisa juga diberikan default.
Untuk memeriksa apakah kunci ada (mengembalikan True
atau False
)
'HOME' in os.environ
Anda juga dapat menggunakan get()
saat mencetak kunci; berguna jika Anda ingin menggunakan default.
print(os.environ.get('HOME', '/home/username/'))
dimana /home/username/
defaultnya
"HOME" in os.environ
atau os.environ.get('HOME')
?
"HOME" in os.environ
vs os.environ.get('HOME') is None
. Seperti yang Anda lihat pertama jauh lebih mudah dibaca & nyaman untuk digunakan.
Pertanyaan asli (bagian pertama) adalah "bagaimana memeriksa variabel lingkungan dengan Python."
Berikut cara memeriksa apakah $ FOO diatur:
try:
os.environ["FOO"]
except KeyError:
print "Please set the environment variable FOO"
sys.exit(1)
"if 'FOO' not in os.environ: ..."
blok
Anda dapat mengakses variabel lingkungan menggunakan
import os
print os.environ
Cobalah melihat konten variabel lingkungan PYTHONPATH atau PYTHONHOME, mungkin ini akan membantu untuk pertanyaan kedua Anda. Namun Anda harus menjelaskannya.
Adapun variabel lingkungan:
import os
print os.environ["HOME"]
Saya khawatir Anda harus menyempurnakan poin kedua Anda sedikit lagi sebelum jawaban yang layak mungkin.
Sebenarnya itu bisa dilakukan sejauh ini:
import os
for item, value in os.environ.items():
print('{}: {}'.format(item, value))
Atau sederhananya:
for i, j in os.environ.items():
print(i, j)
Untuk melihat nilai dalam parameter:
print(os.environ['HOME'])
Atau:
print(os.environ.get('HOME')
Untuk mengatur nilai:
os.environ['HOME'] = '/new/value'
str.format
hanyalah tambahan mewah.
>>> import os, pprint; pprint.pprint(list(os.environ.items()))
Jika Anda berencana untuk menggunakan kode dalam kode aplikasi web produksi,
menggunakan kerangka kerja web seperti Django / Flask, gunakan proyek seperti envparse , dengan menggunakannya Anda dapat membaca nilai sebagai tipe yang Anda tentukan.
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)
CATATAN: autoenv kennethreitz adalah alat yang direkomendasikan untuk membuat variabel lingkungan spesifik proyek, harap dicatat bahwa mereka yang menggunakan autoenv
harap menjaga .env
file pribadi (tidak dapat diakses oleh publik)
Ada juga sejumlah perpustakaan hebat. Envs misalnya akan memungkinkan Anda untuk mem-parsing objek dari variabel lingkungan Anda, yaitu rad. Sebagai contoh:
from envs import env
env('SECRET_KEY') # 'your_secret_key_here'
env('SERVER_NAMES',var_type='list') #['your', 'list', 'here']
Untuk django lihat ( 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')
Anda juga dapat mencoba ini
Pertama, instal python-decouple
pip install python-decouple
impor di file Anda
from decouple import config
Kemudian dapatkan variabel env
SECRET_KEY=config('SECRET_KEY')
Baca lebih lanjut tentang perpustakaan python di sini