Python/Flask

[Flask] 1. 플라스크 개발 준비(점프 투 플라스크 - Mac)

mine-dong 2021. 11. 3. 14:48
플라스크란?

플라스크는 "마이크로 웹 프레임워크"라고 불린다. 프레임워크를 간결하고 확장성 있게 설계할 수 있다.

1. 간결하다.

- 파일 하나의 짧은 코드로도 잘 동작하는 웹 프로그램을 만들 수 있다.

2. 확장성 있다.

- 플라스크는 장고와 반대로 폼(form), 데이터 베이스(database)를 처리하는 기능이 없다. 플라스크는 확장 모듈을 사용하여 이 기능을 보완할 수 있다. 사용자가 그때그때 필요한 모듈을 가져와 확장해가며 개발한다. 

처음부터 모든 기능을 포함하고 있지 않기 때문에 가볍고 간결하며, 확장성 있는 설계가 가능하다.

3. 자유롭다

- 최소한의 규칙만 존재해 다른 프레임워크보다 개발 과정에서 자유롭다.

 

 

플라스크를 사용하여 웹 페이지를 만들기 위한 실습에서 필요한 소프트웨어 설치

1. 파이썬 (www.python.org/downloads)
2. 파이참 (https://www.jetbrains.com/ko-kr/pycharm/download/#section=mac)

 


가상환경 in Python

한 명의 개발자가 여러개의 파이썬 프로젝트를 개발해야하는 상황에서 각 프로젝트에 필요한 파이썬 버전이 다른 경우 문제가 발생한다. 이런 경우 프로젝트에 사용되는 독립적인 가상환경을 여러개 만들어 각각 다른 버전의 파이썬을 설치하면 된다. 

 

1. 가상환경 디렉터리 생성

mkdir venvs
cd venvs

mkdir venvs 명령어를 통해 venvs라는 디렉터리(파일)을 생성해주고
cd venvs 명령어를 통해 만들어진 vens 디렉터리 안으로 들어간다.

 

2. 가상환경 생성

python3 -m venv myproject
cd myproject

위 명령어로 myproject라는 가상환경이 생성되었다. 두번째 줄 명령어로 myproject 안으로 들어간다.

 

3. 가상환경 activate

source ./bin/activate

이 명령어를 입력하면 왼쪽에 (myproject)라는 프롬프트가 생긴 것을 확인할 수 있다. 현재 괄호 안의 가상 환경으로 진입한 상태임을 알 수 있다. 

 

4. 가상환경 deactivate

deactivate

deactivate 한 단어의 명령으로 (myproject)가 사라지고 가상 환경에서 벗어날 수 있다.

 


플라스크 설치

1. 가상 환경으로 진입

위에서 activate단계의 명령어를 통해 가상환경으로 진입하고 (myproject)가 프롬프트에 보이는지 확인하자

 

2. 가상 환경에서 플라스크 설치

pip3 install Flask

pip3로 flask를 설치해 준다.

WARNING: You are using pip version 21.2.3; however, version 21.3.1 is available.
You should consider upgrading via the '~/venvs/myproject/bin/python3 -m pip install --upgrade pip' command.

설치 시 위와같은 경고문이 나온다면

python3 -m pip install --upgrade pip

으로 pip을 업그레이드 해주면 된다.

 


프로젝트 디렉터리 생성

1. 프로젝트 루트 디렉터리 생성

mkdir projects
cd projects

플라스크 프로젝트가 여러개가 될 수 있으므로 프로젝트를 모아둘 루트 디렉터리를 생성해준다. venvs 디렉터리와 같은 위치에 만들어주면 된다.

 

2. 루트 디렉터리 안에서 가상환경 진입하기

source ~/venvs/myproject/bin/activate

1에서 cd projects명령어로 projects 디렉터리로 이동한 상태에서 2번 명령어로 가상환경을 activate 시켜준다.

 

3. 플라스크 프로젝트 담을 디렉터리를 가상환경 안에 생성

mkdir myproject
cd myproject

가상환경 안에서 myproject를 생성하고 해당 디렉터리로 이동한다.


실습을 진행하면서 myproject 가상환경에 진입하려면 매번 디렉터리 위치를 옮기고 source ~/venv/myproject/bin/activate 명령어를 입력해야하는 번거로움이 있다.

이 과정을 간단하게 하기 위해 배치파일을 이용해보자

 

vim myproject.sh

vim 명령어로 venvs 디텍터리 안에 myproject.sh파일을 만들어준다.

a, i, o 중 하나의 키를 눌러 편집 상태로 들어간다.

 

myproject.sh 배치 파일 안에는

#!/bin/bash
cd ~/projects/myproject
source ~/venvs/myproject/bin/activate

위 3줄을 작성한 후 esc버튼 -> :wq 로 배치파일을 저장해준다.

 

source ~/venvs/myproject.sh

이제 어느 디렉터리에 있어도 위 명령어 한 줄이면 myproject 가상 환경으로 진입할 수 있다.


파이참 설치 및 설정

파이참 설치 후 실행한 화면에서 Open을 클릭

projects 디렉터리를 선택해준다.

위 사진처럼 디렉터리가 잘 오픈 되었으면,

이제 상단 PyCharm > Preferences 에서 Interpreter의 위치를

플라스크 프로젝트가 봐야하는 인터프리터로 설정해 주어야 한다.

위 사진의 왼쪽을 참고해서 Python Interpreter 설정으로 들어간 다음 Add 를 눌러준다.

빨간 박스 안 경로대로 들어가서 python을 선택해주면 인터프리터 설정이 모두 완료되었다.


첫 번째 애플리케이션 만들기

 

 

myproject 우클릭으로 New > File 선택 후
pybo.py 를 입력하여 파이썬 파일을 만들어 줍니다.

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_pybo():
    return 'Hello, Pybo!'

pybo.py 안에 위 스크립트를 입력해 주세요.

app = Flask(__name__) 는 플라스크 애플리케이션을 생성하는 코드이고

__name__ 변수에 모듈명이 담긴다.

이 파일이 실행되면 pybo.py 모듈이 실행되는 것이므로 __name__에는 pybo라는 문자열이 담긴다.

@app.route는 괄호 안의 url에 접속하면 다음 줄의 함수를 호출하는 플라스크의 데코레이터이다.

 

 

이제 다시 터미널로 돌아가서

flask run

flask run 명령을 입력해준다. 그러면 아래 처럼 "플라스크 애플리케이션을 찾을 수 없다"는 오류 메시지가 나타난다.

뒤이어 읽어보면 FLASK_APP 환경 변수를 설정하지 않았다고 하니 설정을 해주면 된다.

FLASK_APP 환경변수가 지정되지 않은 경우에 자동으로 app.py를 기본 애플리케이션으로 인식하지만

우리는 이 실습에서 pybo.py로 파일명을 설정했으니 아래대로 진행해 주자

export FLASK_APP=pybo
export FLASK_ENV=development

터미널에 위 코드블럭의 첫 번째 줄을 입력하여

FLASK_APP 환경변수에 pybo 애플리케이션을 지정해주고

두 번재 줄을 입력하여 WARNING을 없애준다.

WARNING은 플라스크 서버가 운영환경으로 실행되었기 때문에 나타난 경고문이기에

운영환경 -> 개발환경으로 지정해 주어야 한다.

 

여기까지 마친 후 다시 "flask run"으로 플라스크 서버를 실행해 보면

아래 처럼 잘 실행된 것을 볼 수 있다.

 

웹 브라우저를 열고 플라스크 서버가 실행된 127.0.0.1:5000주소로 들어간다.

pybo.py에서 작성한 함수, hello_pybo 에서 return 된 "Hello, Pybo!"가 보인다면 성공이다.

127.0.0.1:5000 대신 localhost:5000 으로 접속해도 같은 화면을 볼 수 있다.

127.0.0.1 과 localhost는 현재 컴퓨터를 가리키는 아이피 주소이기 때문이다.


환경 변수 추가하여 실습을 더 간변하게!

source ~/venvs/myproject.sh
export FLASK_APP=pybo
export FLASK_ENV=development

터미널을 실행시킨 후 위 3줄의 명령어를 입력한 후 flask run으로 플라스크 서버를 실행할 수 있다.

이를 한 줄로 줄이기 위해 myproject.sh 배치파일을 수정해 준다.

#!/bin/bash
cd ~/projects/myproject
export FLASK_APP=pybo
export FLASK_ENV=development
source ~/venvs/myproject/bin/activate

export 두 줄을 더 넣어주면 FLASK_APP, FLASK_ENV 환경변수가 자동으로 설정되어 실습을 더 편리하게 할 수 있다.