본문으로 바로가기

[Python][Flask] 00. 설치 & 기본앱 실행

category Launguage/Python 2022. 7. 30. 23:05
목차
1. virtualenv를 통한 개발환경 생성
2. Flask 설치
3. Flask 실행하기
4. dotenv 를 이용한 환경변수 설정

virtualenv 를 통한 개발환경 생성

# flask-example 개발환경 생성
$ virtualenv flask-example --python=python3.9
created virtual environment CPython3.9.13.final.0-64 in 454ms
  creator CPython3Posix(dest=/Users/cheolwon/Project/python-project/flask-example, clear=False, no_vcs_ignore=False, global=False)
  seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=/Users/cheolwon/Library/Application Support/virtualenv)
    added seed packages: pip==22.2.1, setuptools==63.2.0, wheel==0.37.1
  activators BashActivator,CShellActivator,FishActivator,NushellActivator,PowerShellActivator,PythonActivator
  
# 생성한 개발환경의 Python 활성화하기
$ source flask-example/bin/activate
(flask-example) $

Flask 설치

$ pip install flask
Collecting flask
  Using cached Flask-2.1.3-py3-none-any.whl (95 kB)
Collecting itsdangerous>=2.0
  Using cached itsdangerous-2.1.2-py3-none-any.whl (15 kB)
Collecting Werkzeug>=2.0
  Using cached Werkzeug-2.2.1-py3-none-any.whl (232 kB)
Collecting Jinja2>=3.0
  Using cached Jinja2-3.1.2-py3-none-any.whl (133 kB)
Collecting importlib-metadata>=3.6.0
  Using cached importlib_metadata-4.12.0-py3-none-any.whl (21 kB)
Collecting click>=8.0
  Using cached click-8.1.3-py3-none-any.whl (96 kB)
Collecting zipp>=0.5
  Using cached zipp-3.8.1-py3-none-any.whl (5.6 kB)
Collecting MarkupSafe>=2.0
  Using cached MarkupSafe-2.1.1-cp39-cp39-macosx_10_9_x86_64.whl (13 kB)
Installing collected packages: zipp, MarkupSafe, itsdangerous, click, Werkzeug, Jinja2, importlib-metadata, flask
Successfully installed Jinja2-3.1.2 MarkupSafe-2.1.1 Werkzeug-2.2.1 click-8.1.3 flask-2.1.3 importlib-metadata-4.12.0 itsdangerous-2.1.2 zipp-3.8.1

Flask 실행하기

아래와 같이 기본 실행코드를 작성합니다.

# app.py
from flask import Flask

app = Flask(__name__)


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


if __name__ == '__main__':
    app.run(debug=True)

해당 코드를 실행합니다.

$ python app.py
 * Serving Flask app 'app' (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: on
 * Running on http://127.0.0.1:5000 (Press CTRL+C to quit)
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 140-890-076

브라우저를 통해 http://127.0.0.1:5000 포트를 접근하고 Hello, World 페이지가 표기된다면 정상 실행된 것입니다.

실행화면

dotenv 를 이용한 환경변수 설정

dotenv 는 언어와 무관하게 널리 사용되는 환경변수 관리 라이브러리이다.

Python 에서도 python-dotenv 라이브러리가 존재하며, flask 에서 또한 python-dotenv 가 설치되어 있다면 .flaskenv 파일을 생성하여 환경변수를 관리 할 수 있다. 

# python-dotenv 설치
$ pip install python-dotenv

위와 같이 python-dotenv 를 를 설치하고, 프로젝트 root 에서 .flaskenv 파일을 생성 후 환경변수를 등록한다.

# .flaskenv
FLASK_APP=app.py
FLASK_ENV=development  #(or production)

위와 같이 2가지 절차를 통해 환경변수를 등록할 수 있으며, 해당 환경변수는 Flask 앱 실행시 자동으로 바인딩 된다.