본문 바로가기

코딩/Flask

파이썬 - Flask[1] 가상환경으로 Flask 구동하기

반응형

안녕하세요.

오늘의 파이썬 코딩 독학 주제는 virtualenv로 가상환경 구축하고, Flask로 웹서버 구동하기 입니다. 

 

 

1. virtualenv란?

여러분이 파이썬 패키지를 설치할때 사용하는 pip는 아주 강력한 패키지 매니저입니다.

하지만 pip를 이용하여 패키지를 설치하면 설치된 패키지가 시스템 전체에 영향을 미치게 되고, 결국 다양한 프로젝트를 진행하며 더 다양한 패키지를 설치하는 과정에서 패키지 간의 충돌이 발생하게 됩니다.

virtualenv와 같은 가상환경 매니저는 이러한 충돌이 일어나지 않도록 각 프로젝트별로 패키지들을 분리해주는 역할을 합니다.

 

2. virtualenv 사용법

(1) virtualenv 설치하기

cmd 창을 열고 아래와 같은 명령어를 입력하여 virtualenv를 설치합니다.

pip install virtualenv

 

(2) 가상환경 구축하기

cmd 창을 열고 아래와 같은 명령어를 입력하여 새로운 프로젝트를 생성해줍니다.

virtualenv 프로젝트명

저는 flasktest200907라는 프로젝트명을 이용했습니다.

정상적으로 명령어가 실행되면 프로젝트명과 동일한 이름의 폴더가 생성됩니다.

역시 cmd에서 아래 명령어를 입력하여 생성된 폴더를 열어줍니다.

cd 폴더명

마지막으로 아래 명령어를 입력하여 가상환경을 가동해줍니다.

Scripts\activate

여기까지 무사히 따라오셨다면 이제 cmd의 커맨드라인이 다음과 같이 변경됩니다.

커맨드라인의 앞에 (flasktest200907)이라는 텍스트가 보이시나요?

저 괄호안에 여러분이 만들어주신 프로젝트명이 들어있으면 정상적으로 가상환경이 가동되었다는 뜻입니다.

한가지 주의하실점이 있다면, 가상환경을 활성화 시키면 현재 시스템에서의 파이썬 환경은 모두 활성화된 가상환경의 영향을 받게 됩니다.

만약 별도의 프로젝트를 진행하시게 되면 반드시 현재의 가상환경을 비활성화한 후 새로운 가상환경을 만들어주셔야 합니다.

참고로 가상환경을 비활성화 하는데는 다음 명령어가,

deactivate

가상환경을 삭제하는데는 다음 명령어가 사용됩니다.

rm -rf 프로젝트명

 

3. 플라스크란?

파이썬의 웹 프레임워크인 Flask는 파이썬 환경에서 웹 환경을 구현해줍니다.

흔히 Flask와 비교되는 Django도 웹 프레임워크지만 플라스크보다 조금 더 다양한 기능을 지원한다는 점이 다릅니다.

 

그렇다면 웹 프레임워크는 무엇일까요?

웹 프레임워크는 여러분이 댓글을 달거나 게시판을 클릭하는 것과 같은 웹페이지 상에서의 활동을 겉이 아닌 속에서부터 구현해주는 뼈대 역할을 합니다.

 

4. 플라스크 설치하기

아까 가상환경을 구축해두었으니 아래 명령어를 입력하여 플라스크를 설치해줍니다.

pip install Flask

플라스크 설치도 무사히 끝나셨다면 원하는 폴더에 flasktest.py라는 이름의 파이썬 파일을 생성하고, 비주얼스튜디오 코드를 활용하여 다음과 같은 코드를 작성한 후 플라스크 서버를 실행해줍니다.

from flask import Flask

app = Flask(__name__)

@app.route("/")
def hello():
	return "Hello World!"

if __name__ == "__main__":
	app.run()

정상적으로 실행하셨다면 다음과 같은 메시지가 출력되면서 서버에 접속할 수 있게 됩니다.

이제 인터넷을 열고, 주소창에 'localhost:5000'을 입력해줍니다.

다음과 같이 인터넷 창에 'Hello World!' 라는 텍스트가 뜨면 플라스크 서버를 성공적으로 구축하신 겁니다.

축하드립니다.

플라스크를 이용해 웹구축을 위한 첫걸음을 내딛으셨네요.

하지만 막상 이걸로 뭔가를 하려니 막막하기만 하실겁니다.

혹시 html이라고 아시나요?

어디선가 들어보셨을텐데 html은 별다른게 아니라 웹페이지의 겉모습을 만들기 위한 언어입니다.

아까 작성한 코드에서 return 부분의 Hello World!를 지우고 다음과 같은 코드를 작성해줍니다. 

from flask import Flask

app = Flask(__name__)

@app.route("/")
def hello():
	return "<html><body><h1>헬로 월드~</h1></body></html>"

if __name__ == "__main__":
	app.run()

다시 웹서버를 실행해주시면 다음과 같은 화면이 나타납니다.

html도 써봤는데, 그래서 이걸로 뭘 하라는건지 아직 뭐가뭔지 감이 안잡하신다구요?

그럼 이번엔 flasktest.py파일이 있는 폴더에 templates라는 폴더를 생성하고 거기에 test.html이라는 파일을 생성하신 후, 다음과 같은 코드를 입력해주세요.

<html><body><h1>헬로 월드~!</h1></body></html>

이제 다시 파이썬 코드를 작성합니다.

from flask import Flask, render_templates

app = Flask(__name__)

@app.route("/")
def hello():
	return render_templates('test.html')

if __name__ == "__main__":
	app.run()

다시 웹서버를 실행시켜주시면 다음과 같은 화면이 나타납니다.

이제 html 파일을 편집해서 templates폴더에 저장하신 후 파이썬 코드를 통해 읽어주시면 웹페이지를 원하는대로 꾸밀 수 있게 되었습니다.

 

5. route함수 사용하기

route()함수를 사용하면 URL을 이용한 웹페이지 접근 방법을 활요할 수 있습니다.

우선 templates폴더에 'bebsae.html'라는 파일을 만들고 다음과 같은 코드를 입력해줍니다.

<html><body><h1>뱁새입니다.</h1></body></html>

이제 다음과 같은 코드를 입력하여 'localhost:5000/bebsae' 라는 URL로 접속할 수 있도록 만들어줍니다.

from flask import Flask, render_template

app = Flask(__name__)

@app.route("/")
def hello():
	return render_template('test.html')

@app.route("/bebsae")
def bebsae():
	return render_template('bebsae.html')

if __name__ == "__main__":
	app.run()

웹서버를 다시 실행시킨 후 'localhost:5000/bebsae'로 접속하시면 다음과 같은 화면이 나타납니다.

이처럼 route함수를 활용하면 특정 URL주소에서 원하는 페이지를 보여줄 수 있습니다.

반응형