파이썬 가상환경과 Flask

🌻Truthful·2023년 9월 7일

.venv (virtual environment)

파이썬의 가상 환경을 나타내는 디렉토리 중 하나입니다.

✅ 파이썬 가상 환경은 왜 쓰는거죠?

1️⃣ 의존성 관리: 가상 환경을 사용하면 프로젝트마다 독립적인 환경을 구축할 수 있습니다. 즉, 한 패키지의 업그레이드가 다른 패키지에 영향을 주지 않습니다.

2️⃣ 이식성: requirements.txt와 같은 방법으로 프로젝트의 의존성을 기록할 수 있으므로, 다른 환경이나 팀원들과 쉽게 공유하고 재생산할 수 있습니다.


✅ 그렇다면 클라우드 수업을 듣는데 왜 가상환경이 필요할까요?

1️⃣ 일관성: 클라우드 상에서 애플리케이션을 실행할 때, 개발 환경과 동일한 환경을 보장하여 예기치 않은 문제나 버그를 방지합니다.

2️⃣ 멀티테넌시: 클라우드 서비스 제공자들은 종종 여러 사용자나 조직들에게 서비스를 제공합니다. 가상 환경은 각 사용자의 애플리케이션과 의존성을 격리하여 서로 간섭되지 않게 합니다.

3️⃣ 오토스케일링 및 배포: 클라우드에서 애플리케이션을 자동으로 확장하거나 다중 지역에 배포할 때, 각 인스턴스가 동일한 환경에서 실행되도록 해야 합니다. 가상 환경은 이를 가능하게 합니다.


간단한 예제

from flask import Flask  # Flask 패키지에서 Flask 클래스를 가져옵니다.
app = Flask(__name__)  # Flask 클래스의 인스턴스를 생성하여 'app' 변수에 할당합니다.
"""
__name__은 Flask에게 "앱의 현재 위치"를 알려주는 역할을 합니다. 
이 정보를 통해 Flask는 필요한 정적 파일과 템플릿 파일들의 위치를 빠르게 찾아낼 수 있게 됩니다.
"""


@app.route("/")  # 데코레이터는 URL 경로와 Python 함수를 연결하는데 사용합니다.
# 루트 URL 경로를 `home` 함수에 연결합니다.
# 웹 브라우저에서 해당 애플리케이션의 루트 URL에 액세스하면 "Hello, Flask!" 문자열이 표시됩니다.
def home():
    return "Hello, Flask!"

그 다음에 터미널에 아래와 같은 명령어를 실행하면 됩니다.

python -m flask run

디버깅 모드 적용해보기

import re # Python의 정규 표현식 모듈인 re를 가져옵니다.
from datetime import datetime  # 현재 시간과 날짜 정보를 얻기 위해 사용됩니다.

from flask import Flask

app = Flask(__name__)


@app.route("/")
def home():
    return "Hello, Flask!"


# /hello/ 다음에 오는 문자열을 name 변수로 캡처하는 라우터 데코레이터를 정의합니다.
@app.route("/hello/<name>")
def hello_there(name):  # URL의 <name> 부분은 이 함수의 인자로 전달됩니다.
    now = datetime.now()  # 현재 날짜와 시간 정보를 가져옵니다.
    # 현재 날짜와 시간 정보를 원하는 형식으로 문자열로 변환합니다.
    formatted_now = now.strftime("%A, %d %B, %Y at %X")

    # name에서 알파벳 문자만을 포함하는 부분을 찾기 위해 정규 표현식을 사용합니다.
    match_object = re.match("[a-zA-Z]+", name)

    # name에 알파벳 문자만 있는 경우 해당 문자열을 clean_name에 할당하고, 그렇지 않은 경우 "Friend"를 할당합니다.
    if match_object:
        clean_name = match_object.group(0)
    else:
        clean_name = "Friend"

    # 최종 메시지를 구성하고 반환합니다.
    content = "Hello there, " + clean_name + "! It's " + formatted_now
    return content 

launch.json의 역할

프로젝트의 성격이나 사용하는 언어, 프레임워크에 따라 디버깅을 위해 필요한 설정이 다르기 때문에,launch.json을 통해 적절한 도구와 설정을 준비하게 됩니다.

Flask 튜토리얼

profile
"인생의 목적은 타인을 따르는 것이 아니라 자신을 창조하는 것이다."

0개의 댓글