[REAL Python – FastAPI] – “풀스택 블로그 개발하기 – 백엔드 개발환경 설정”

[REAL Python – FastAPI] – “풀스택 블로그 개발하기 – 백엔드 개발환경 설정”

11월 29, 2023
  1. 이번 프로젝트에서는 유용한 Python IDE 인 Pycharm Professional Eddition 을 사용할 예정입니다. VSCode 와같은 다른 에디터를 사용하셔도 문제는 없습니다.
  2. 이 프로젝트에서 사용하는 Python 버전은 3.11 입니다. 설치할 대부분의 패키지가 Python 3.8 이상을 지원할 것이기에 문제가 생길 일이 적을 수 있지만, 최대한 3.11 혹은 그 이상의 버전이 설치되었음을 확인해 주세요. (2023년 11월 29일 현재, FastAPIPython 3.8 부터 Python 3.11 까지를 지원합니다.)
  3. 현재 저는 여러 Python 버전을 관리하기 위해서 Pyenv 를, pipx 를 통해서 poetry 를 설치하여 사용하고 있습니다. 만약 poetry 를 사용하고 싶지 않으시다면, 앞으로 설치할 poetry add ~pip install ~ 처럼 사용하시면 됩니다.

Python 버전 확인하기

아래의 명령어를 입력하여 Python 버전을 확인합니다. 필자는 Pyenv 를 사용하여 여러 파이썬 버전을 설치하여 사용하고 있는데, 앞으로의 내용을 진행하기 위해서는 Python 버전이 최소한 3.8 이상임을 꼭 확인하세요!

참고로 pyenv 를 설치하기 위해서는 https://github.com/pyenv/pyenv 를 방문하세요. 동일한 컴퓨터에서 python 2.7 부터 python 3.12 까지 자유로이 사용할 수 있습니다. 의외로 이런 게 귀찮지만 설치해두면 엄청 편합니다. (Pyenv 설치는 튜토리얼의 필수 요소는 아닙니다. Pyenv 는 공식적으로 windows 환경을 지원하지 않네요. 필자는 MacOS 에서 brew 로 pyenv 를 설치했습니다.)

Poetry 설치하기

이번 프로젝트에서는 패키지 매니저로 Poetry 를 사용할 계획입니다. Poetry.lock 파일과 함께 패키지 관리를 수월하게 도와주는 친구인데, 경험상 pip 을 바로 사용하는 것이나 pipenv 보다 나았습니다.

필자는 pipx 를 통해서 poetry 를 설치하였습니다. https://pypa.github.io/pipx/ 를 참고하여 pipx 를 설치한 후, pipx install poetry 를 사용하면 조금 더 편합니다.

https://python-poetry.org/docs/ 를 참고하여 poetry 를 설치해 주세요. 아래의 명령어를 입력하여 설치를 확인하세요!

그러면, 기본적인 준비는 완료되었습니다. 최종적으로 아래의 명령어들이 제대로 동작하는지 알면 됩니다.

Pycharm 으로 프로젝트 생성하기

VSCode 를 사용하시는 분들은 아래에 새로운 섹션이 있을 예정입니다. 하지만 새로운 프로젝트 생성에 대해서만 다룰 뿐, 앞으로 주요 스크린샷은 Pycharm 이 될 것입니다. Pycharm CE 를 사용하셔도 문제는 없습니다.

새 프로젝트를 아래와 같은 환경으로 구성합니다. 저는 “당신의 삽질을 기록하라” 라는 의미에서 shovelog 로 이름을 짓겠습니다.

“기본 인터프리터” 부분은 터미널에 which python 을 입력하여 나온 경로를, “poetry 실행 파일” 은 which poetry 를 입력하여 나온 경로를 사용해주세요.

그러면, pyproject.toml 이 생겨있는 새로운 프로젝트가 만들어질 겁니다.

VSCode 에서 프로젝트 생성하기

폴더를 하나 만들고, VSCode 로 연 다음 poetry init 명령어를 입력합니다. 아래와 같이 생성하면 됩니다.

FastAPI 설치하기

poetry add "fastapi[all]" 을 입력하여 FastAPI 를 설치합니다.

그러면 pyproject.toml 에 아래의 내용이 추가된 것을 확인할 수 있을 것입니다.

마찬가지로, `poetry add “uvicorn[standard]” 를 입력하여 ASGI 서버를 설치해 주세요.

첫 번째 FastAPI 앱 작성하기: Wassup, World!"

from fastapi import FastAPI

app = FastAPI()


@app.get("/")
async def root():
    return {"message": "Wassup, World!"}

pyproject.toml 과 같은 레벨에 app.py 를 만들고, 위의 내용을 작성합니다.

터미널에 uvicorn app:app 을 입력하여 서버를 실행해 보세요. 아래와 같은 내용이 표시될 겁니다.

또, /docs 로 이동하면,

멋진 OPenAPI 3.1 사양의 문서가 나타날 겁니다. Flask 에서는 여러 외부 패키지를 사용해야 가능했던 작업인데, 간단하죠?

이렇게 하면 아주 기본적인 FastAPI 설치가 완료된 것입니다. :)

아래의 섹션에서는 포맷터 & 린터 설정을 다룹니다.

앞으로 프로젝트를 설정하는 데 필수는 아니지만, 코드를 깔끔하고 일관성있게 유지하는 데 도움이 되므로 꼭 설정하시는 것을 추천합니다. :)

선택 사항: ruff 설정하기

ruffPEP8 뿐만 아니라 여러 린팅 설정을 매우 빠르게 할 수 있는 도구 중 하나입니다.

저는 ruff 대신 black & flake8 을 사용하고 있었는데, 최근 ruffflake8 을 대체할 수 있다고 하여 갈아탔습니다.

만약 ruff 를 설치하고 싶으시다면, pipx install ruff 혹은 poetry add ruff 를 입력하세요.

from fastapi import FastAPI

app = FastAPI()


@app.get("/")
async def root():
    return {"message": "Wassup, World!"
            
            
            
            
            
            }

위와 같은 코드가 있을 때,

ruff format . 을 터미널에 입력하면 이상한 } 가 재정렬이 될 겁니다. 저장할 때마다 포맷이 적용되게 하려면, 아래와 같이 도구>파일 감시기 설정을 추가해 주세요. “프로그램 (P)” 부분은 which ruff 를 터미널에 입력한 결과를 추가하면 됩니다.

그렇다면 기본적인 설정은 완료되었습니다. 추가로, pre-commit 과 같은 부분에 훅을 설정하여 커밋 시 포맷팅, 린팅 검사가 무조건 동작하도록 설정해 보세요. :)

Leave A Comment

Avada Programmer

Hello! We are a group of skilled developers and programmers.

Hello! We are a group of skilled developers and programmers.

We have experience in working with different platforms, systems, and devices to create products that are compatible and accessible.