Bagaimana cara mengakses nilai variabel lingkungan?


Jawaban:


3173

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)

1
Halo, terima kasih atas balasan efektif Anda tentang 'instalasi default'; efektif dalam sudut pandang untuk memahaminya dengan cepat daripada melalui tautan. Itu benar-benar saya hargai :) tetapi tentang (1) pertanyaan saya, silakan lihat perintah dan output snippet di bawah ini: >>> import os >>> print os.environ ['PYTHONPATH'] Traceback (panggilan terakhir terakhir): File " <console> ", baris 1, dalam <module> File" C: \ Python25 \ lib \ os.py ", baris 435, dalam getitem return self.data [key.upper ()] KeyError: 'PYTHONPATH' >>> cetak os.environ.get ('PYTHONPATH') Tidak ada >>> // PLZ akan dilanjutkan ... //
Amit Yadav

Dalam 1 cara script melemparkan Exception sedangkan yang ke 2 memberi None. Jadi, apakah ada cara untuk mendapatkan nilai yang berarti atau apakah saya melakukan dengan cara yang salah ??? Amit
Amit Yadav

7
os.environ adalah kamus. Mencoba mengakses kunci yang tidak ada dalam kamus akan melemparkan KeyError. Metode get hanya mengembalikan Tidak ada ketika kunci tidak ada. Apakah Anda memiliki set PYTHONPATH? Bisakah Anda mencoba dengan variabel seperti PATH, yang dijamin ada? Apakah itu mengembalikan nilai yang berarti?
Rod

2
PYTHONPATH digunakan untuk menambahkan jalur pencarian baru ke Python (sys.path) dari luar Python. Lihatlah docs.python.org/using/cmdline.html#environment-variables
Rod

11
.get()bisa juga diberikan default.
Gringo Suave

243

Untuk memeriksa apakah kunci ada (mengembalikan Trueatau 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


3
Mana yang lebih baik, "HOME" in os.environatau os.environ.get('HOME')?
endolit

11
@endolith Mereka melakukan hal yang berbeda. Yang pertama mengembalikan Benar atau Salah, sedangkan yang kedua mengembalikan nilai, mungkin Tidak ada.
Trenton

1
@endolith, pertanyaan yang benar woud "HOME" in os.environvs os.environ.get('HOME') is None. Seperti yang Anda lihat pertama jauh lebih mudah dibaca & nyaman untuk digunakan.
Konstantin Sekeresh

59

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)

66
"FOO" di os.environ
ealfonso

4
Usahakan bisa lebih cepat. Kasus env vars kemungkinan terbaik untuk 'coba': stackoverflow.com/a/1835844/187769
RandomInsano

13
@RandomInsano lebih cepat = / = lebih baik. Kode ini terlihat kurang dapat dibaca daripada sebuah "if 'FOO' not in os.environ: ..."blok
Dangercrow

44

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.


29

Adapun variabel lingkungan:

import os
print os.environ["HOME"]

Saya khawatir Anda harus menyempurnakan poin kedua Anda sedikit lagi sebelum jawaban yang layak mungkin.


27
import os
for a in os.environ:
    print('Var: ', a, 'Value: ', os.getenv(a))
print("all done")

Itu akan mencetak semua variabel lingkungan beserta nilainya.


27

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'

4
Tidak, jawaban ini benar-benar tidak menambahkan apa pun di atas jawaban yang ada
Bart

1
Ini harus dihapus, itu adalah duplikat dari jawaban lain. str.formathanyalah tambahan mewah.
Hubungkan chargerAnda

>>> import os, pprint; pprint.pprint(list(os.environ.items()))
noobninja

18

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 autoenvharap menjaga .envfile pribadi (tidak dapat diakses oleh publik)


11

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']

3

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')

0

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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.