Ich habe eine Umgebungsvariable festgelegt, auf die ich in meiner Python -Anwendung zugreifen möchte. Wie bekomme ich diesen Wert?
Auf Umgebungsvariablen wird über os.environ zugegriffen
import os
print(os.environ['HOME'])
Oder Sie können eine Liste aller Umgebungsvariablen anzeigen, indem Sie Folgendes verwenden:
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))
Python-Standardinstallation unter Windows ist C:\Python
. Wenn Sie beim Ausführen von python herausfinden möchten, haben Sie folgende Möglichkeiten:
import sys
print(sys.prefix)
So überprüfen Sie, ob der Schlüssel vorhanden ist (gibt True
oder False
zurück)
'HOME' in os.environ
Sie können beim Drucken der Taste auch get()
verwenden. nützlich, wenn Sie eine Standardeinstellung verwenden möchten.
print(os.environ.get('HOME', '/home/username/'))
dabei ist /home/username/
die Standardeinstellung
Die ursprüngliche Frage (erster Teil) lautete "Wie überprüfe ich Umgebungsvariablen in Python?".
So überprüfen Sie, ob $ FOO gesetzt ist:
try:
os.environ["FOO"]
except KeyError:
print "Please set the environment variable FOO"
sys.exit(1)
Sie können mit auf die Umgebungsvariablen zugreifen
import os
print os.environ
Versuchen Sie, den Inhalt der Umgebungsvariablen PYTHONPATH oder PYTHONHOME zu sehen. Vielleicht ist dies für Ihre zweite Frage hilfreich. Sie sollten es jedoch klarstellen.
Was die Umgebungsvariablen betrifft:
import os
print os.environ["HOME"]
Ich befürchte, Sie müssten Ihren zweiten Punkt noch etwas präzisieren, bevor eine vernünftige Antwort möglich ist.
import os
for a in os.environ:
print('Var: ', a, 'Value: ', os.getenv(a))
print("all done")
Dadurch werden alle Umgebungsvariablen mit ihren Werten gedruckt.
Eigentlich kann man das wegschaffen:
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)
Zum Anzeigen des Wertes im Parameter:
print(os.environ['HOME'])
Oder:
print(os.environ.get('HOME')
So stellen Sie den Wert ein:
os.environ['HOME'] = '/new/value'
Wenn Sie planen, den Code in einem Produktionswebanwendungscode zu verwenden,
Verwenden Sie mit einem beliebigen Webframework wie Django/Flask Projekte wie envparse , und lesen Sie den Wert als Ihren definierten Typ.
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: kennethreitzs autoenv ist ein empfohlenes Tool, um projektspezifische Umgebungsvariablen zu erstellen. Bitte beachten Sie, dass diejenigen, die autoenv
verwenden, die .env
-Datei privat halten (für die Öffentlichkeit nicht zugänglich).
In Python 3:
#!/usr/bin/python3
import os
for param in os.environ.keys():
print("%s: %s " % (param, os.environ[param]))
Hier ist eine einzeilige Option unter der Annahme, dass import os ausgeführt wurde:
for key in os.environ: print(key,':',os.environ[key])
oder mit Formatierung:
for key in os.environ: print('{:>30} {:<4} {:}'.format(key,':',os.environ[key]))
Es gibt auch eine Reihe großartiger Bibliotheken. Envs ermöglicht es Ihnen beispielsweise, Objekte aus Ihren Umgebungsvariablen zu 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 os.environ.get
:
try:
env_value = os.environ.get("key_maybe_not_exist")
except KeyError:
print("Not exist environment value for %s" % "key_maybe_not_exist")
oder:
if "key_maybe_not_exist" in os.environ:
existed_env_value = os.environ["key_maybe_not_exist"]
für os.getenv
:
existed_env_value = os.getenv("key_maybe_not_exist")
gleichwertig:
existed_env_value = os.getenv("key_maybe_not_exist", default=None)