Tôi đặt một biến môi trường mà tôi muốn truy cập trong ứng dụng Python của mình. Làm thế nào để tôi có được giá trị của nó?
Tôi đặt một biến môi trường mà tôi muốn truy cập trong ứng dụng Python của mình. Làm thế nào để tôi có được giá trị của nó?
Câu trả lời:
Biến môi trường được truy cập thông qua os.envir
import os
print(os.environ['HOME'])
Hoặc bạn có thể xem danh sách tất cả các biến môi trường bằng cách sử dụng:
os.environ
Vì đôi khi bạn có thể cần phải xem một danh sách đầy đủ!
# 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))
Cài đặt mặc định Python trên Windows là C:\Python
. Nếu bạn muốn tìm hiểu trong khi chạy python, bạn có thể làm:
import sys
print(sys.prefix)
.get()
cũng có thể được đưa ra một mặc định.
Để kiểm tra xem khóa có tồn tại không (trả về True
hoặc False
)
'HOME' in os.environ
Bạn cũng có thể sử dụng get()
khi in phím; hữu ích nếu bạn muốn sử dụng một mặc định.
print(os.environ.get('HOME', '/home/username/'))
nơi /home/username/
là mặc định
"HOME" in os.environ
hay os.environ.get('HOME')
?
"HOME" in os.environ
vs os.environ.get('HOME') is None
. Như bạn có thể thấy đầu tiên là dễ đọc hơn và thoải mái để làm việc với.
Câu hỏi ban đầu (phần đầu tiên) là "cách kiểm tra các biến môi trường trong Python."
Đây là cách kiểm tra xem $ FOO có được đặt không:
try:
os.environ["FOO"]
except KeyError:
print "Please set the environment variable FOO"
sys.exit(1)
"if 'FOO' not in os.environ: ..."
khối
Bạn có thể truy cập vào các biến môi trường bằng cách sử dụng
import os
print os.environ
Hãy thử xem nội dung của các biến môi trường PYTHONPATH hoặc PYTHONHOME, có thể điều này sẽ hữu ích cho câu hỏi thứ hai của bạn. Tuy nhiên bạn nên làm rõ nó.
Đối với các biến môi trường:
import os
print os.environ["HOME"]
Tôi e rằng bạn phải tăng cường điểm thứ hai của mình thêm một chút nữa trước khi có câu trả lời xác đáng.
Trên thực tế nó có thể được thực hiện điều này đi:
import os
for item, value in os.environ.items():
print('{}: {}'.format(item, value))
Hoặc đơn giản:
for i, j in os.environ.items():
print(i, j)
Để xem giá trị trong tham số:
print(os.environ['HOME'])
Hoặc là:
print(os.environ.get('HOME')
Để đặt giá trị:
os.environ['HOME'] = '/new/value'
str.format
chỉ là một bổ sung ưa thích.
>>> import os, pprint; pprint.pprint(list(os.environ.items()))
Nếu bạn đang dự định sử dụng mã trong mã ứng dụng web sản xuất,
sử dụng bất kỳ khung web nào như Django / Flask, hãy sử dụng các dự án như envparse , sử dụng nó, bạn có thể đọc giá trị như loại đã xác định.
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)
LƯU Ý: autoenv của kennethreitz là một công cụ được đề xuất để tạo các biến môi trường cụ thể của dự án, xin lưu ý rằng những ai đang sử dụng autoenv
vui lòng giữ .env
tệp riêng tư (không thể truy cập công khai)
Ngoài ra còn có một số thư viện tuyệt vời. Ví dụ, Envs sẽ cho phép bạn phân tích các đối tượng ra khỏi các biến môi trường của bạn, đó là rad. Ví dụ:
from envs import env
env('SECRET_KEY') # 'your_secret_key_here'
env('SERVER_NAMES',var_type='list') #['your', 'list', 'here']
Để xem django, hãy xem ( https://github.com/joke2k/django-envir )
$ 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')
Bạn cũng có thể thử điều này
Đầu tiên, cài đặt python-decouple
pip install python-decouple
nhập nó trong tập tin của bạn
from decouple import config
Sau đó lấy biến env
SECRET_KEY=config('SECRET_KEY')
Tìm hiểu thêm về thư viện python tại đây