2013-11-19 3 views
8

Wie man app.config.from_envvar() verwendet?Wie benutze ich app.config.from_envvar? (Kolben)

Ich habe Flask doc und suchen Sie nach diesem Thema, was ich alle weiß, ist dies zu tun.

DATABASE = 'flaskr.db' 
DEBUG = True 
SECRET_KEY = 'development key' 

app = Flask(__name__) 
app.config.from_envvar(’FLASKR_SETTINGS’, silent=True) 

Wird dies laden die Konfiguration von FLASKR_SETTINGS? und wie kann das Programm wissen, was ist FLASKR_SETTINGS? auch so etwas wie dies (der Pfad zu der Konfigurationsdatei) gesetzt ?: soll ich

FLASKR_SETTINGS = desktop/my_flask_project/FlaskConfig 

und die ersten drei Zeilen in diese Datei bewegen, und wenn ich diese Datei ausführen, wird es in geladen werden?

und ich nur wählen, von diesen Rechten zu verwenden? zwischen der app.config.from_envvar (diese für das Laden von Config aus der externen Datei) oder der app.config.from_object (Name) (dieser lädt Konfig innerhalb der Datei)? Verstehe ich richtig?

Antwort

5

envvar kurz:

Dies wird in der Dokumentation hier abgedeckt. Wenn Sie ein Linux-basiertes Betriebssystem verwenden (Ubuntu, Mac usw.), dann wird wahrscheinlich bash ausgeführt, wenn Sie eine normale Shell ausführen. Um eine Umgebungsvariable in bash gesetzt tun Sie einfach:

$ SOME_NAME=some_value 

So im Fall eines Flask-Anwendung, die sich aus der FLASKR_SETTINGS Umgebungsvariable konfiguriert, würden Sie tun:

$ FLASKR_SETTINGS=/path/to/settings/file.ext 
$ python your_script.py 

Was Flask tut, ist Importieren Sie einfach diese Datei als eine normale Python-Datei und ziehen Sie jeden UPPERCASE_ONLY-Namen in der Datei heraus (jede andere caseCombination wird ignoriert).

Das gleiche gilt für from_object - in der Tat, from_object auch eine importierbaren Zeichenfolge nehmen:

app.config.from_object("importable.configuration") 

Schließlich ist zu beachten, dass Sie nicht nur ein Anruf config - mehrere Anrufe Also in meinem Fall

app.config.from_object("your.package.default.config") 
app.config.from_envvar("YOUR_APPS_ENVVAR", silent=True) 
+0

, wenn ich nur die Config von außen verwende ich nur app.config.from_envvar benötigen() und müssen nicht verwenden app.config.from_object() rechts: kann verwendet werden? Sie sagen mir einfach, mehrere Anrufe sind optional? Die Datei, die den Konfigurationscode enthält, muss .py sein? oder .ext? Ich sehe im Doc sagt es .cfg o_O !!! – Team

+0

@Team - richtig, Sie können jede Kombination von 'from_object' und' from_envvar' verwenden, die Sie möchten. Was die Erweiterung betrifft, kann es alles sein, was Sie wollen ('.py',' .cfg', '.i-Just-made-this-up-right-now' ... alle funktionieren). –

+0

Ich tippte. venv/bin/activate, dann Export FLASKR_CONFIG = Benutzer/Team/desktop/flask \ project/blasmr/config.py und dann python blazer.py, dann hat es einen Fehler SyntaxError: Nicht-ASCII-Zeichen '\ xe2' in der Datei bulgerr.py on Zeile 8, aber keine Kodierung deklariert; siehe http: //www.python.org/peps/pep-0263.html für Details (venv) Tammarats-MacBook-Air: Kolben Team $ << ---- die Zeile 8 ist dieser Code app.config.from_envvar ('FLASKR_CONFIG', silent = True) Ich habe etwas falsch gemacht ? Worüber sagt der Fehler? – Team