기본 콘텐츠로 건너뛰기

[Flask] Pycharm Community 에서 Flask 프로젝트 실행/디버그 설정하기

[Flask] Pycharm Community 에서 Flask 프로젝트 실행/디버그 설정하기

Pycharm Community 에서 Flask 프로젝트 실행/디버그 설정하기

0. 간단한 flask 프로젝트 생성

PS D:\DEVPROJECTS\PycharmProjects\flasko> tree DEXTR 볼륨에 대한 폴더 경로의 목록입니다. 볼륨 일련 번호는 1894-E5A9입니다. D:. └─flasko ├─static │ ├─content │ ├─fonts │ └─scripts └─templates PS D:\DEVPROJECTS\PycharmProjects\flasko> dir 디렉터리: D:\DEVPROJECTS\PycharmProjects\flasko Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 2019-11-14 오후 4:56 flasko -a---- 2019-11-14 오후 4:56 5580 flasko.pyproj -a---- 2019-11-14 오후 4:56 978 flasko.sln -a---- 2015-11-24 오전 11:04 9 requirements.txt -a---- 2019-11-14 오후 4:56 347 runserver.py -a---- 2019-11-14 오후 4:56 1669 web.config -a---- 2019-11-14 오후 4:56 1464 web.debug.config

flasko 라는 이름의 간단한 flask 프로젝트를 visual studio 를 이용하여 생성했다. 최상위 디렉토리의 runserver.py 를 실행하여 flask 가 실행되게 된다. 이 파일과 같은 위치에 있는 flasko 라는 이름의 디렉토리에는 실제 view와 로직이 들어가 있는 py 파일들과 템플릿 jinja html 파일등이 있다.

1. Pycharm Community 를 열어, 디렉토리를 프로젝트로 열기

pycharm community 에서 상위의 flasko 디렉토리를 지정하여 프로젝트를 연다. 프로젝트를 실행하기 위해서, 메인 실행파일인 runserver.py 를 지정하여 run 을 수행하여도 flask 웹이 동작하지 않는다. 실행을 위해 특별한 설정이 필요하다.

2. Run Configuration 편집

메뉴의 Run - Edit Configuration 을 클릭하여 실행 설정을 연다.

화면 왼쪽 가장 위의 + 아이콘을 클릭하여 나오는 드롭박스 선택중에서 Python 을 선택하여 새로운 실행 설정을 만든다. 이 실행 설정을 잘 편집하면 flask 프로젝트를 pycharm community 에서 실행시킬 수 있다.

Name 은 적당한 이름을 지정한다. flaskapp 으로 하겠다.

은 적당한 이름을 지정한다. flaskapp 으로 하겠다. Python Interpreter 에 flask 가 설치된 파이썬을 선택한다. 시스템에 기본으로 설치된 파이썬을 선택해도 될 것이고, virtualenv 또는 venv, 또는 conda env 로 가상환경을 설정하여 사용하는 경우 원하는 가상실행환경을 선택한다. 나는 미리 만들어 놓은 aicpu3664 라는 실행환경을 선택하겠다.

에 flask 가 설치된 파이썬을 선택한다. 시스템에 기본으로 설치된 파이썬을 선택해도 될 것이고, virtualenv 또는 venv, 또는 conda env 로 가상환경을 설정하여 사용하는 경우 원하는 가상실행환경을 선택한다. 나는 미리 만들어 놓은 aicpu3664 라는 실행환경을 선택하겠다. (윈도우의 경우) Script path 를 Module Name 으로 바꾸고, Module Name 에 flask 라고 써준다.

를 으로 바꾸고, Module Name 에 flask 라고 써준다. 그 아래 Parameters 에 run 이라고 써준다.

에 run 이라고 써준다. Environment variables 에 PYTHONBUFFERED=1 이라고 쓰여 있는데, 여기에 FLASK 관련 환경변수를 추가해 주어야 한다. 여기가 핵심이다. 환경변수 FLASK_APP 에 본 flask 프로젝트의 메인 실행 파일명을 적어준다. 이번 예의 경우 즉, FLASK_APP=runserver.py 를 적어준다.적을 땐 기존 것 옆에 ; (세미콜론) 으로 구분하여 적어준다. 환경변수 FLASK_ENV 도 delevopment 로 설정해 주어야 한다. 즉, ;FLASK_ENV=development 을 더 써준다. 이 변수가 설정되어 있으면, 현재 실행환경이 실서비스가 아닌 개발환경이라는 뜻이다. 개발하는 웹을 실행시키고, 소스를 변경하여 저장하면, 알아서 웹 프로젝트를 다시 시작해 준다.

에 PYTHONBUFFERED=1 이라고 쓰여 있는데, 여기에 FLASK 관련 환경변수를 추가해 주어야 한다. 여기가 핵심이다. Working directory 에 프로젝트 최상위 폴더를 찾아 지정해 준다. 이 예의 경우 상위에 있는 flasko 디렉토리를 지정하면 될 것이다.

그리고 마지막으로 File - Settings - Project: [proj name] - Project Interpreter 를 열어 파이썬 인터프리터를 위 설정에서 지정한 인터프리터와 동일하게 맞춰준다.

3. 실행해 보기

이렇게 설정을 마치고, Run - Run (flaskapp) 을 실행해보면, 다음과 같이 메시지가 나오면서, 실행이 된다.

D:\PyEnvs\aicpu3664\Scripts\python.exe -m flask run * Serving Flask app "runserver.py" * Environment: production WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. * Debug mode: off * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

visual studio 의 경우에는 실행하면 자동으로 웹브라우저를 띄워주지만, 여긴 그런 것 없다. 다만 접속해야 하는 주소가 하이퍼링크로 나오니까 메시지에서 url 을 클릭하여 웹브라우저를 실행하여 확인한다.

from http://daewonyoon.tistory.com/295 by ccl(S)

댓글

이 블로그의 인기 게시물

[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...