[REAL Python – FastAPI] – “풀스택 블로그 개발하기 – 백엔드 개발환경 설정”
[REAL Python – FastAPI] – “풀스택 블로그 개발하기 – 백엔드 개발환경 설정”
- 이번 프로젝트에서는 유용한 Python IDE 인 Pycharm Professional Eddition 을 사용할 예정입니다.
VSCode
와같은 다른 에디터를 사용하셔도 문제는 없습니다.- 이 프로젝트에서 사용하는
Python
버전은 3.11 입니다. 설치할 대부분의 패키지가Python 3.8
이상을 지원할 것이기에 문제가 생길 일이 적을 수 있지만, 최대한3.11
혹은 그 이상의 버전이 설치되었음을 확인해 주세요. (2023년 11월 29일 현재,FastAPI
는Python 3.8
부터Python 3.11
까지를 지원합니다.)- 현재 저는 여러
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
설정하기
ruff
는 PEP8
뿐만 아니라 여러 린팅 설정을 매우 빠르게 할 수 있는 도구 중 하나입니다.
저는 ruff
대신 black & flake8
을 사용하고 있었는데, 최근 ruff
가 flake8
을 대체할 수 있다고 하여 갈아탔습니다.
만약 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
과 같은 부분에 훅을 설정하여 커밋 시 포맷팅, 린팅 검사가 무조건 동작하도록 설정해 보세요. :)