• Operating System: Ubuntu 16 or Ubuntu 18
  • Python 3.X is installed
  • Python Pip is installed
  • Python Virtual Environment is installed (Optional)


Structure Overview

|__ dotlah_flask_api
    |__ api
        |__ res
    |__ requirements.txt

Replace the dotlah_flask_api directory with the project name of your choice.


01. Create the necessary directories and files. You can use the following shell script to create it, or manually enter them in the terminal, or create them from another way.

$ cd ~ 
$ nano 


mkdir $1
mkdir -p $1/api/res

touch $1/api/res/
touch $1/api/res/
touch $1/
touch $1/
touch $1/requirements.txt
touch $1/


02.  Run the setup script.

$ sh <project-name-without-space> 

$ sh dotlah_flask_api 


While it is totally safe to create a Project with spaces, it is more of a standard in this case.


03. Navigate to the Project directory

$ cd <project-name-without-space> 

$ cd dotlah_flask_api 


04. Update the necessary Python library/packages by setting the value of the requirements.txt

$ nano requirements.txt 


Set the value:



05. (Optional but recommended). Create a virtual environment dedicated to the Flask/API project.

For instructions on how to install and configure virtual environment. See this guide.


$ cd dotlah_flask_api 
$ python3 -m venv project-venv 


06. Activate the Virtual Environment.

$ source project-venv/bin/activate  


07. Install the flask library via Pip using the requirements.txt

(project-venv) $ pip install -r requirements.txt 


08. Update the content of

(project-venv) $ nano 


# -*- coding: utf-8 -*-

# Start Flask with default web server
from api import application'', port=8888, debug=True)


09.  Update the dunder python file.

(project-venv) $ nano api/ 


This imports the res python module, the endpoints will be located at the application_res or other res (Resource) python file.

from flask import Flask 

application = Flask(__name__) 

import api.res.application_res 


10.  Update the

(project-venv) $ nano api/res/ 


# -*- coding: utf-8 -*-

from flask import jsonify
from api import application

@application.route('/', methods=['GET'])
def get_app_properties():
name = 'dotlah-flask-api'
version = '0.0.1'

app_properties = \
  'name' : name
  , 'version' : version

return jsonify(app_properties)


Above will create a GET endpoint accessible by the root path, (/).

11. Run the application

(project-venv) $ python 


It should show something similar

Note that running the application via this way ( should only be used on local development. If needed to deploy on a Web Application server, a middleware or WSGI server should be used instead.


12. Test the application on the browser or via CURL.

Via Curl (open another terminal session)

$ curl http://localhost:8888


Via Browser

Previous How To: Configure Python Virtual Environment In Ubuntu
Next Huawei Cloud & AI Innovations Lab Launch In Singapore