Как установить FLASK_ENV внутри конфигурационного файла? - PullRequest
0 голосов
/ 09 февраля 2019

TL; DR

Я не хочу export мои переменные каждый раз, когда я вхожу в систему.Я хочу, чтобы они были в моей конфигурации.

Из документов

Рекомендуется использовать переменные среды, как описано выше.Хотя в вашей конфигурации или коде можно установить ENV и DEBUG, это настоятельно не рекомендуется.

Как мне все равно это сделать?Как это «возможно»?

БОЛЬШЕ - Что я уже пробовал

У меня flask.cfg с FLASK_ENV='development'.Я бегу flask run, и я печатаю development.Но производственный сервер уже запущен.terminal Он игнорирует следующее:

app.config.from_pyfile("flask.cfg")

print(f"{app.config['ENV']}") => development

Это личный проект, который не имеет значения.Вот почему я игнорирую лучшие практики для удобства.

Ответы [ 3 ]

0 голосов
/ 09 февраля 2019

Структура вашего проекта выглядит примерно так:

dad_site /
| -app /
.. | - __init__ .py
.. | -flask.cfg
| -run.py

Ваше приложение / __init__ .py файл:

from flask import Flask

app = Flask(__name__)
app.config.from_pyfile('flask.cfg', silent=True)

@app.route('/')
def home():
    return 'Hello World'

Файл конфигурации /app/flask.cfg:

TESTING=False
DEBUG=True

Файл run.py:

from app import app

if __name__ == '__main__':
    app.run(host='127.0.0.1', port=5000)

Вы также можете определить папку экземпляра и поместить туда свой файл конфигурации.Таким образом, структура вашего приложения будет выглядеть примерно так:

dad_site /
| -app /
.. | - __init__ .py
.. | -instance /
.... | -flask.cfg
| -run.py

И ваш __init__ .py файл:

from flask import Flask
import os

def get_app_base_path():
    return os.path.dirname(os.path.realpath(__file__))


def get_instance_folder_path():
    return os.path.join(get_app_base_path(), 
                        'instance')

app = Flask(__name__,
            instance_path=get_instance_folder_path(),
            instance_relative_config=True)

app.config.from_pyfile('flask.cfg', silent=True)

@app.route('/')
def home():
    return 'Hello World'
0 голосов
/ 09 февраля 2019

Если вы перенесете свою конфигурацию в Python, все станет немного проще.Рассмотрим

from flask import Flask
from config import Config

app = Flask(__name__)
app.config.from_object(Config)

, где config.py выглядит как

import os

class Config:
    SECRET_KEY = os.environ.get('SECRET_KEY', 'default sekret')

Это дает вам значения по умолчанию, которые могут быть переопределены из переменных среды.

0 голосов
/ 09 февраля 2019

Как насчет этого: установить пакет python-dotenv , создать файл .flaskenv в корневой папке вашего проекта и добавить, например, следующее:

FLASK_APP=app.py (or whatever you named it)
FLASK_ENV=development (or production)

Сохранить.У колбы бегут .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...