Ich habe eine Umgebungsvariable festgelegt, auf die ich in meiner Python-Anwendung zugreifen möchte. Wie bekomme ich seinen Wert?
Ich habe eine Umgebungsvariable festgelegt, auf die ich in meiner Python-Anwendung zugreifen möchte. Wie bekomme ich seinen Wert?
Antworten:
Auf Umgebungsvariablen wird über os.environ zugegriffen
import os
print(os.environ['HOME'])
Oder Sie können eine Liste aller Umgebungsvariablen anzeigen, indem Sie:
os.environ
Wie manchmal müssen Sie möglicherweise eine vollständige Liste sehen!
# 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))
Die Python-Standardinstallation unter Windows ist C:\Python
. Wenn Sie dies herausfinden möchten, während Sie Python ausführen, können Sie Folgendes tun:
import sys
print(sys.prefix)
.get()
kann auch eine Standardeinstellung erhalten.
Um zu überprüfen, ob der Schlüssel vorhanden ist (gibt True
oder zurück False
)
'HOME' in os.environ
Sie können auch get()
beim Drucken des Schlüssels verwenden. nützlich, wenn Sie einen Standard verwenden möchten.
print(os.environ.get('HOME', '/home/username/'))
Wo /home/username/
ist die Standardeinstellung?
"HOME" in os.environ
oder os.environ.get('HOME')
?
"HOME" in os.environ
vs os.environ.get('HOME') is None
. Wie Sie zuerst sehen können, ist die Arbeit weitaus lesbarer und komfortabler.
Die ursprüngliche Frage (erster Teil) lautete: "Wie werden Umgebungsvariablen in Python überprüft?"
So überprüfen Sie, ob $ FOO festgelegt ist:
try:
os.environ["FOO"]
except KeyError:
print "Please set the environment variable FOO"
sys.exit(1)
"if 'FOO' not in os.environ: ..."
Block
Sie können mit auf die Umgebungsvariablen zugreifen
import os
print os.environ
Versuchen Sie, den Inhalt der Umgebungsvariablen PYTHONPATH oder PYTHONHOME anzuzeigen. Dies ist möglicherweise hilfreich für Ihre zweite Frage. Sie sollten es jedoch klarstellen.
Wie für die Umgebungsvariablen:
import os
print os.environ["HOME"]
Ich fürchte, Sie müssten Ihren zweiten Punkt noch ein wenig ausarbeiten, bevor eine anständige Antwort möglich ist.
Eigentlich kann es so weg gemacht werden:
import os
for item, value in os.environ.items():
print('{}: {}'.format(item, value))
Oder einfach:
for i, j in os.environ.items():
print(i, j)
So zeigen Sie den Wert im Parameter an:
print(os.environ['HOME'])
Oder:
print(os.environ.get('HOME')
So stellen Sie den Wert ein:
os.environ['HOME'] = '/new/value'
str.format
ist nur eine schicke Ergänzung.
>>> import os, pprint; pprint.pprint(list(os.environ.items()))
Wenn Sie planen, den Code in einem Produktions-Webanwendungscode zu verwenden,
verwenden Sie ein beliebiges Webframework wie Django / Flask, verwenden Sie Projekte wie envparse . Mit diesem Code können Sie den Wert als Ihren definierten Typ lesen.
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)
HINWEIS: kennethreitz ' autoenv ist ein empfohlenes Tool zum Erstellen projektspezifischer Umgebungsvariablen. Bitte beachten Sie, dass diejenigen, die es verwenden autoenv
, die .env
Datei privat halten (für die Öffentlichkeit nicht zugänglich).
Es gibt auch eine Reihe großartiger Bibliotheken. Mit Envs können Sie beispielsweise Objekte aus Ihren Umgebungsvariablen analysieren, was rad ist. Zum Beispiel:
from envs import env
env('SECRET_KEY') # 'your_secret_key_here'
env('SERVER_NAMES',var_type='list') #['your', 'list', 'here']
Für Django siehe ( 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')
Sie können dies auch versuchen
Installieren Sie zuerst python-decouple
pip install python-decouple
Importieren Sie es in Ihre Datei
from decouple import config
Dann holen Sie sich die env-Variable
SECRET_KEY=config('SECRET_KEY')
Lesen Sie mehr über die Python - Bibliothek hier