Set Flask environment to development mode as default?
Question:
Every time I start up my flask app the environment variable is set to production. I want to have it set to development mode by default. Otherwise every time I start my app i have to run ..
export FLASK_ENV=development
How can I set environment’s default value as development in every startup?
EDIT: I am using flask in a virtual environment on a raspberry pi.
Answers:
On Linux distro, like "Raspberry pi o.s", specify the environment on the terminal with the code below.
Unless you specify the environment, flask will assume production
.
export FLASK_ENV=development
flask run
You can edit your main flask app file and add these lines:
if __name__ == '__main__':
app.run(debug=True)
Using this method you have to run your flask app with Python interpreter like this => python app.py
Best Practice:
-
Install python-dotenv
package inside your working environment =>pip install python-dotenv
-
Create a file named .env
, put your environment variables in it, for your case it’s FLASK_ENV=development
-
Then add this code to your config.py
or some file that will get loaded before Flask main App
from dotenv import load_dotenv
dotenv_path = join(dirname(__file__), '.env') # Path to .env file
load_dotenv(dotenv_path)
Note that: If you are using flask
command to run your application, you don’t need to do the third step, flask
will find .env files in the project directory by itself.
Using this method, it will only set Environment variable for the project that you have added this code to.
Like the first answer and instead of adding the variable to a .env file which can be forgotten, do this instead.
This way, if you try to run the file in production, you’ll get an assertion error to remind you to actually use a dedicated web server (which "imports" the app). If you run locally, not only will you be reminded to use a .env file, but in the case no environment file is needed, the flask env is set to development to avoid any production conflicts.
import os
app = Flask(__name__)
IS_DEV = app.env == 'development' # FLASK_ENV env. variable
# code
if __name__ == '__main__':
# guaranteed to not be run on a production server
assert os.path.exists('.env') # for other environment variables...
os.environ['FLASK_ENV'] = 'development' # HARD CODE since default is production
app.run(debug=True)
Every time I start up my flask app the environment variable is set to production. I want to have it set to development mode by default. Otherwise every time I start my app i have to run ..
export FLASK_ENV=development
How can I set environment’s default value as development in every startup?
EDIT: I am using flask in a virtual environment on a raspberry pi.
On Linux distro, like "Raspberry pi o.s", specify the environment on the terminal with the code below.
Unless you specify the environment, flask will assume production
.
export FLASK_ENV=development
flask run
You can edit your main flask app file and add these lines:
if __name__ == '__main__':
app.run(debug=True)
Using this method you have to run your flask app with Python interpreter like this => python app.py
Best Practice:
-
Install
python-dotenv
package inside your working environment =>pip install python-dotenv
-
Create a file named
.env
, put your environment variables in it, for your case it’sFLASK_ENV=development
-
Then add this code to your
config.py
or some file that will get loaded before Flask main Appfrom dotenv import load_dotenv dotenv_path = join(dirname(__file__), '.env') # Path to .env file load_dotenv(dotenv_path)
Note that: If you are using
flask
command to run your application, you don’t need to do the third step,flask
will find .env files in the project directory by itself.
Using this method, it will only set Environment variable for the project that you have added this code to.
Like the first answer and instead of adding the variable to a .env file which can be forgotten, do this instead.
This way, if you try to run the file in production, you’ll get an assertion error to remind you to actually use a dedicated web server (which "imports" the app). If you run locally, not only will you be reminded to use a .env file, but in the case no environment file is needed, the flask env is set to development to avoid any production conflicts.
import os
app = Flask(__name__)
IS_DEV = app.env == 'development' # FLASK_ENV env. variable
# code
if __name__ == '__main__':
# guaranteed to not be run on a production server
assert os.path.exists('.env') # for other environment variables...
os.environ['FLASK_ENV'] = 'development' # HARD CODE since default is production
app.run(debug=True)