ฉันตั้งค่าตัวแปรสภาพแวดล้อมที่ฉันต้องการเข้าถึงในแอปพลิเคชัน Python ของฉัน ฉันจะรับค่าได้อย่างไร
ฉันตั้งค่าตัวแปรสภาพแวดล้อมที่ฉันต้องการเข้าถึงในแอปพลิเคชัน Python ของฉัน ฉันจะรับค่าได้อย่างไร
คำตอบ:
ตัวแปรสภาพแวดล้อมสามารถเข้าถึงได้ผ่านทางos.environ
import os
print(os.environ['HOME'])
หรือคุณสามารถดูรายการตัวแปรสภาพแวดล้อมทั้งหมดโดยใช้:
os.environ
บางครั้งคุณอาจต้องดูรายการทั้งหมด!
# 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 C:\Python
คือ หากคุณต้องการทราบว่าในขณะที่ใช้งาน python คุณสามารถทำได้:
import sys
print(sys.prefix)
.get()
ยังสามารถได้รับการเริ่มต้น
หากต้องการตรวจสอบว่ามีกุญแจอยู่True
หรือไม่(ส่งคืนหรือFalse
)
'HOME' in os.environ
คุณยังสามารถใช้get()
เมื่อพิมพ์คีย์ มีประโยชน์ถ้าคุณต้องการใช้ค่าเริ่มต้น
print(os.environ.get('HOME', '/home/username/'))
ที่/home/username/
เป็นค่าเริ่มต้น
"HOME" in os.environ
หรือos.environ.get('HOME')
?
"HOME" in os.environ
os.environ.get('HOME') is None
อย่างที่คุณเห็นว่าอันดับแรกอ่านได้ง่ายขึ้นและสะดวกสบายในการทำงาน
คำถามเดิม (ส่วนแรก) คือ "วิธีการตรวจสอบตัวแปรสภาพแวดล้อมใน Python"
นี่คือวิธีตรวจสอบว่ามีการตั้งค่า $ FOO หรือไม่:
try:
os.environ["FOO"]
except KeyError:
print "Please set the environment variable FOO"
sys.exit(1)
"if 'FOO' not in os.environ: ..."
บล็อก
คุณสามารถเข้าถึงตัวแปรสภาพแวดล้อมได้โดยใช้
import os
print os.environ
ลองดูเนื้อหาของตัวแปรสภาพแวดล้อม PYTHONPATH หรือ PYTHONHOME บางทีนี่อาจเป็นประโยชน์สำหรับคำถามที่สองของคุณ อย่างไรก็ตามคุณควรชี้แจง
สำหรับตัวแปรสภาพแวดล้อม:
import os
print os.environ["HOME"]
ฉันเกรงว่าคุณจะต้องแยกประเด็นที่สองของคุณออกไปอีกเล็กน้อยก่อนที่คำตอบที่เหมาะสมจะเป็นไปได้
import os
for a in os.environ:
print('Var: ', a, 'Value: ', os.getenv(a))
print("all done")
ที่จะพิมพ์ตัวแปรสภาพแวดล้อมทั้งหมดพร้อมกับค่าของพวกเขา
จริงๆแล้วมันสามารถทำได้:
import os
for item, value in os.environ.items():
print('{}: {}'.format(item, value))
หรือเพียงแค่:
for i, j in os.environ.items():
print(i, j)
สำหรับการดูค่าในพารามิเตอร์:
print(os.environ['HOME'])
หรือ:
print(os.environ.get('HOME')
วิธีตั้งค่า:
os.environ['HOME'] = '/new/value'
str.format
เป็นเพียงการเพิ่มแฟนซี
>>> import os, pprint; pprint.pprint(list(os.environ.items()))
หากคุณวางแผนที่จะใช้รหัสในโค้ดแอปพลิเคชันเว็บที่ใช้งานจริง
โดยใช้กรอบงานเว็บใด ๆ เช่น Django / Flask ให้ใช้โปรเจ็กต์เช่นenvparseโดยใช้มันคุณสามารถอ่านค่าตามประเภทที่คุณกำหนด
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)
หมายเหตุ: autoenv ของkennethreitzเป็นเครื่องมือที่แนะนำสำหรับการสร้างตัวแปรสภาพแวดล้อมของโครงการโดยเฉพาะโปรดทราบว่าผู้ที่ใช้งานอยู่autoenv
โปรดให้.env
ไฟล์เป็นส่วนตัว (ไม่สามารถเข้าถึงได้)
นอกจากนี้ยังมีห้องสมุดที่ดีจำนวนมาก ตัวอย่างEnvsจะช่วยให้คุณสามารถแยกวิเคราะห์วัตถุจากตัวแปรสภาพแวดล้อมของคุณซึ่งเป็น rad ตัวอย่างเช่น:
from envs import env
env('SECRET_KEY') # 'your_secret_key_here'
env('SERVER_NAMES',var_type='list') #['your', 'list', 'here']
สำหรับ django โปรดดูที่ ( 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')
คุณสามารถลองสิ่งนี้ได้
ก่อนติดตั้ง python-decouple
pip install python-decouple
นำเข้าไว้ในไฟล์ของคุณ
from decouple import config
จากนั้นรับตัวแปร env
SECRET_KEY=config('SECRET_KEY')
อ่านเพิ่มเติมเกี่ยวกับห้องสมุดหลามที่นี่