기본 콘텐츠로 건너뛰기

[Flask] Python 기반 꿀잼 웹 프레임워크

[Flask] Python 기반 꿀잼 웹 프레임워크

네 맞아여, 전 PHP 개발자입니다.

근데! PHP와 함께해온 3년의 시간들이 무안해질만큼 꿀잼 프레임워크를 찾았는데!

그게 바로 Flask였습니다.

플라스크(Flask)는?

파이썬(Python) 기반의 '마이크로(Micro) 웹 프레임워크'입니다.

여기서 '마이크로(Micro)'라는 것은 '작고, 기능이 적다'는 뜻이 아니라, '핵심 기능만 간결하게 유지하면서 확장 가능한 것'이라는 의미입니다.

그렇기 때문에 플라스크는 엄청 가볍고 (사실 있는게 없다고 할 정도로) 자유도가 높습니다. (하나부터 열까지 내가 다 만들어야... 하)

하지만 그만큼! 엄청 꿀잼 프레임워크니까 저와 함께 시작해 보도록 하죠!

플라스크 한글 메뉴얼은 http://flask-docs-kr.readthedocs.io/ko/latest에 있습니다.

플라스크 개발 환경 구축하기

플라스크는 기본적으로 파이썬 3버전을 지원하지 않습니다.

그 이유는! 플라스크가 의존하고 있는 Werkzeug가 아직 파이썬 3 버전을 지원하지 않기 때문입니다!

그래도! 파이썬 3으로 개발해서 파이썬 2.7 버전으로 코드를 바꿔줄 수 있는 라이브러리들이 있습니다.

그래도 일단은 파이썬 2.7 버전을 이용해서 시작해보도록 하겠습니다.

파이썬 설치하기

맥 유저 같은 경우는 기본적으로 파이썬 2.7 버전이 설치되어 있습니다.

윈도우 유저는 파이썬 사이트에서 파이썬 2.7 버전을 다운로드 받아서 설치해야 합니다.

파이썬 다운로드 : https://www.python.org/downloads/

파이썬 2.7.14 버전을 다운로드 해 설치합니다.

그리구 맥은 그냥 터미널창에서 'python' 명령어를 통해서 python CLI를 실행 시킬 수 있지만, 윈도우는 환경 변수 설정을 해줘야 합니다. (이게 한번 꼬이면 정말 빡쳐요)

윈도우 환경 변수 설정 방법은 http://doocong.com/python/python-pip-install/을 참고해 주시면 좋겠습니다.

pip 설치하기

그 다음은 파이썬 패키지 관리자 도구인 'pip'를 설치해야 합니다.

윈도우 같은 경우는 위의 링크에 pip 설치 방법까지 나와 있습니다.

맥 유저는 터미널에 아래의 명령어를 입력해 주시면 됩니다.

1 $ sudo easy_install pip cs

Virtualenv 설치하기

'Virtualenv'는 나의 컴퓨터 환경에서 다른 공간을 할당하는(?) 일종의 가상 머신입니다. 가상 머신이라고 하기엔 작은 규모고, 같은 운영체제를 기반으로 하지만, python 프로젝트가 내 컴퓨터의 다른 요소들과 상호작용하지 않게 도와줍니다.

우리는 새로운 플라스크 프로젝트를 virtualenv 안에다 생성할 것입니다.

pip를 이용해서 설치해 봅시다.

윈도우는 CMD, 맥은 terminal에 다음 명령어를 입력합니다.

1 $ sudo pip install virtualenv cs

이 명령어는 우리의 컴퓨터에 virtualenv를 설치해 줍니다.

우리는 virtualenv를 통해서 가상의 공간을 할당하고, 가상 공간을 끄고 킬 수 있습니다.

새로운 프로젝트 이름을 'hello'라고 해봅시다.

hello라는 폴더를 생성하고, hello 폴더로 이동합시다!

1 2 $ mkdir hello $ cd hello cs

그러면 이제 본격적으로 프로젝트를 시작하기 위해 가상환경을 생성해 줄겁니다. 가상 환경의 이름은 일단 'venv'로 해두죠.

1 $ virtualenv venv cs

그러면 hello 폴더 안에 venv라는 폴더가 생성되는 것을 확인할 수 있습니다.

venv는 가상환경과 관련된 정보를 담고 있습니다.

가상환경을 실행하기 위해서는 venv/bin/ 폴더 안에 있는 activate를 실행 시켜야 합니다.

1 $ source venv / bin / activate cs

윈도우

1 $ venv\scripts\activate cs

그러면 다음과 같이 우리가 가상 환경을 사용하고 있다는 표시가 뜨게 됩니다.

1 (venv) $ cs

그러면 가상 환경 구축까지 끝났습니다!

flask 설치하기

우리는 가상환경이 켜진 상태에서 플라스크를 설치할 것입니다.

가상환경 안에서 설치된 패키지들은 실제 컴퓨터 환경에서 사용할 수 없습니다.

즉, 가상환경이 활성화 되어야만 flask를 사용할 수 있습니다.

pip를 이용해 flask를 설치해 줍니다.

1 (venv) $ sudo pip install Flask cs

그러면 플라스크 설치를 완료 했습니다!

웹 서버 구동

그럼 이제 간단하게 서버를 시동해보도록 하죠.

일단 hello 폴더에 hello.py 파일을 생성합니다.

그 안에는 다음과 같이 코드를 작성합니다!

1 2 3 4 5 6 from flask import Flask app = Flask(__name__) @app.route( '/' ) def hello(): return "hello!" ; cs

1번줄 : flask 패키지로부터 Flask 모듈을 불러옵니다.

2번줄 : app이라는 변수에 플라스크 서버 객체를 할당합니다.

4번줄 : '/'이라는 url의 요청에 대한 처리를 할것이라고 지정합니다.

5번줄 : '/'이라는 url로 요청을 받으면, hello()라는 함수를 실행합니다.

6번줄 : hello()라는 함수는 "hello!"라는 응답을 줍니다.

그러면 실행해 봅시다!

1 (venv) $ export FLASK_APP = hello.py cs

플라스크 웹 서버가 hello.py를 기본 앱으로 설정하라고 명령합니다.

1 (venv) $ flask run cs

서버를 실행 시킵니다.

그러면 플라스크 서버가 127.0.0.1:5000에 실행되었다고 알려줍니다.

<아주 조촐하지만 성공입니다! 분명 성공이에요!!>

성공입니다!!!

마침

혹시 오류가 나거나 궁금한 사항이 있으면 언제든지 질문 주세요!

참고 : http://flask.pocoo.org/docs/0.12/quickstart

from http://cordelia273.space/18 by ccl(A)

댓글

이 블로그의 인기 게시물

[GCP] Flask로 TF 2.0 MNIST 모델 서빙하기

[GCP] Flask로 TF 2.0 MNIST 모델 서빙하기 Google Cloud Platform 우선 TensorFlow 2.0을 설치하자. 머신에 직접 설치하거나 도커를 다운받아 사용, 혹은 구글 colab을 활용( https://www.tensorflow.org/install)하면 되는데, TensorFlow에서 권장하는대로 머신에 VirtualEnv를 활용해서 설치하자 ( https://www.tensorflow.org/install/pip). 설치하는 김에 Flask도 같이 설치해보자. Compute Machine 하나를 생성(크게 부담 없는 예제라 g1 instance)하고, SSH를 연결하여 실행하면 된다. $ sudo apt update $ sudo apt install python3-dev python3-pip $ sudo pip3 install -U virtualenv # 굳이 system-wide로 flask를 설치할 필요는 없지만 그렇게 했다. $ sudo pip3 install flask $ sudo pip3 install flask-restful # virtualenv 환경에서 tensorflow 2.0 설치 $ virtualenv --system-site-packages -p python3 ./venv $ source ./venv/bin/activate # sh, bash, ksh, or zsh (venv) $ pip install --upgrade pip (venv) $ pip install --upgrade tensorflow 모든 환경이 마련되었으니, 우선 MNIST 모델을 TF 2.0으로 Training하여 모델을 Save 해 두자(tf_mnist_train.py). 대략 99% 이상 정확도가 나온다! import tensorflow as tf import numpy as np # 학습 데이터 load ((train_data, train_label), (eval_data, eval_label)) = tf....

스프링 프레임워크(Spring Framework)란?

스프링 프레임워크(Spring Framework)란? "코드로 배우느 스프링 웹 프로젝트"책을 개인 공부 후 자료를 남기기 위한 목적이기에 내용 상에 오류가 있을 수 있습니다. '스프링 프레임워크'가 무엇인지 말 할 수 있고, 해당 프레임워크의 특징 및 장단점을 설명할 수 잇는 것을 목표로합니다. 1. 프레임워크란? 2. 스프링 프레임워크 "뼈대나 근간을 이루는 코드들의 묶음" Spring(Java의 웹 프레임워크), Django(Python의 웹 프레임워크), Flask(Python의 마이크로 웹 프레임워크), Ruby on rails(Ruby의 웹 프레임워크), .NET Framework, Node.js(Express.js 프레임워크) 등등. 프레임워 워크 종류 : 3. 개발 시간을 단축할 수 있다. 2. 일정한 품질이 보장된 결과물을 얻을 수 있다. 1. 실력이 부족한 개발자라 허다러도 반쯤 완성한 상태에서 필요한 부분을 조립하는 형태의 개발이 가능하다. 프레임워크를 사용하면 크게 다음 3가지의 장점 이 있습니다. 프레임워크 이용 한다는 의미 : 프로그램의 기본 흐름이나 구조를 정하고, 모든 팀원이 이 구조에 자신의 코드를 추가하는 방식으로 개발 한다. => 이러한 상황을 극복하기 위한 코드의 결과물이 '프레임워크' 입니다. 개발자는 각 개개인의 능력차이가 크고, 따라서 개발자 구성에 따라서 프로젝트의 결과 차이가 큽니다. 2. 스프링 프레임워크(Spring Framework) 자바 플랫폼을 위한 오픈 소스 애플리케이션 스프링의 다른 프레임워크와 가장 큰 차이점은 다른 프레임워크들의 포용 입니다. 이는 다시말해 기본 뼈대를 흔들지 않고, 여러 종류의 프레임워크를 혼용해서 사용할 수 있다는 점입니다. 대한민국 공공기관의 웹 서비스 개발 시 사용을 권장하고 있는 전자정부 표준프레임워크 이다. 여러 프레임워크들 중 자바(JAV...

Dummy to resolve the flask problems

Dummy to resolve the flask problems This post is about flask problems that I struggled with. Hope you this is useful things when you taste it. Issue : How to deploy a flask application on Apache2 Resolve : As you know, flask is a micro framework. It can be handled on Apache2 using WSGI module. See the reference. Reference: https://www.digitalocean.com/community/tutorials/how-to-deploy-a-flask-application-on-an-ubuntu-vps Issue : Flask caused ERR_CONNECTION_ABORTED on POST Resolve : There are lots issues for this problem in principle. It caused when browser keep sending some buffer but server doesn't want to receive. My case is like this (submit.html) (submit.py) @bp.route('/submit', methods=["GET", "POST"]) def submit(): return render_template("submit.html") This kinda skel code to explain this. In flask case, this can be caused when it runs as develop server such as run...