ESM_개발 과정

SWJ·2023년 1월 24일
0

Firebase

목록 보기
1/1

firebase에서 pyrebase패키지를 활용하여 JSON타입으로 DB를 핸들링 할 것이다. python 언어를 기반으로 백엔드를 구축할 것이며, flask 웹 어플리케이션 개발 라이브러리를 사용한다.
대부분의 작업은 conda 가상환경, vscode, 터미널에서 진행한다.

firebase 환경설정

1. 작업할 가상환경 구축

터미널에서 가상환경 생성해준다.
flask는 그냥 설치만해주면 바로 사용가능하다.

conda create -n (가상환경명) python=3.8
conda activate (가상환경명)
pip install flask

2. pyrebase 환경설정

  • Apple sillicon anaconda 환경에서 작업할 수 있다면!

윈도우 작업환경에서 겪었던 자잘한 에러들을 잡을 일이 생기지 않았다.
윈도우에서도 anaconda 재설치 또는 업데이트를 하고 나아질 수도 있지만, 본인은 아직 안해봤다. 누가 먼저 해보시고 친절하게 알려주시면 행복하겠지만 그게 아마 미래의 내가 될 것 같다..

(1) pip install pyrebase4 처음부터 상위버전 설치
(2) 파이썬 암호화 패키지중 PyCryptodomex 만 추가로 설치해주면 기본적인 환경이 완성된다.

pip install pycryptodomex

참고 주소


  • Apple sillicon anaconda 환경이 아니라면!

(window 또는 mac miniforge 등)
(1) 파이썬에서 jSON 웹 시그니처 구현할 jws-0.1.3 압축 파일 다운로드
(2) 압축해제 후 setup.py 파일의 read 함수 수정 vsc에서 작업
인코딩 방식을 utf-8로 변경해줄 파라미터 기입 (아래와 같이 수정)

            def read(fname):
                return open(os.path.join(os.path.dirname(__file__), fname), encoding="UTF-8").read()

(3) pip install pyrebase
(4) pip install pycryptodome # 파이썬 암호화 패키지 PyCrypto(구버전)을 PyCryptodome, PyCryptodomex 으로 업그레이드하고 사용
(5) 만약 그래도 에러가나면 pip install pyrebase4 버전으로 새로 설치.
(6) 터미널 재실행후 import pyrebase 시도해보면 실행 됨.


  • PyCryptodome
    PyCryptodome은 PyCrypto를 fork하여 제작된 거의 동일한(drop-in replacement) 모듈이다.

  • PyCryptodomex
    PyCryptodome을 사용하다보면 PyCryptodomex라는 패키지도 찾아볼 수 있다.
    PyCryptodomex는 PyCryptodome의 standalone 버전이다.
    PyCrypto와 PyCryptodome을 동시에 사용할 때 발생할 수 있는 문제(이름 등) 등을 회피하기 위해 만들어진 패키지다.
    PyCryptodomex를 설치한 경우 Cryptodome을 import 해야 한다.

  • flask
    python 웹 어플리케이션 개발 라이브러리중에서도 비교적 가볍고, 빠르게 사용 가능하다.

  • Django
    python 웹 어플리케이션 개발 라이브러리로 flask보다 무겁지만 더 효율적이다.
    배우는데 시간이 오래 걸린다.


firebase 업로드하기

https://console.firebase.google.com/?hl=ko
위의 주소에서 회원가입 등 기본 작업 후 시작하기.
작업은 아래 순서대로 따라하면 된다.

프로젝트 추가하기

Realtime Database 기능 프로젝트에 추가하기

프로젝트의 웹 생성해서 DB와 연동시켜주기

아직 호스팅 설정은 하지 않음
프로젝트 웹 앱에 firebase 추가해줌

드래그 되어있는 부분인 firebaseConfig 정보 복사해서 DB json 인증 파일에 넣어줌.

주의
설명하기 위해서 이렇게 주석이 적힌 json 파일의 사진을 올렸지만
이 파일에 주석 적으면 오류난다. 작업할 땐 지우자.

주의사항 및 디버깅

  1. ModuleNotFoundError: No module named 'flask'

VSCode 터미널에서 작업하다가 보면 python3 버전으로 파일을 실행시켰을 때 가상환경에 설치해둔 python과 버전이 달라서 flask를 인식 못하는 경우가 생길 수 있다. 고래 싸움에 새우 등 터지는 에러이기 때문에 본인은 엄한 flaks나 관련 함수들을 고치려다가 조금 해맸다.

아래와 같이 vscode python3 버전과 일반 python(??) 버전이 꼬인 것을 볼 수 있다. 또한 그냥 python 명령으로 실행하면 정상적으로 실행이 된다는 것도 확인 가능하다.

참고로 터미널에서 작업할 땐 파이썬 버전이 꼬이지 않았다.

해결책으로는 아래의 경우 중에 하나를 선택하면 되겠다.
(1) vscode python3 버전 다운그레이드
(2) 일반 python 명령으로 실행
(3) 버전이 꼬이지 않는 일반 터미널에서 작업

  1. Address already in use Port 5000 is in use by another program.
    mac pc에서 작업한다면 초기 테스트할때 개발자 주소로 사용될 "5000"을 이미 사용중이라는 아래와 같은 오류를 만날수 있다.

    Address already in use Port 5000 is in use by another program. Either identify and stop that program, or start the server with a different port. On macOS, try disabling the 'AirPlay Receiver' service from System Preferences -> Sharing.

해결 방법은 Airplay 수신을 꺼야한다.
시스템 설정 > 공유 > Airplay 수신 모드

위의 경로로 가서 Airplay 수신 모드를 꺼버리면 간단하게 해결된다!
별거 아닌데 좀 해맸다. 이런건 왜 자동으로 켜져있는걸까 이 개같은거..

  1. TemplateSyntaxError
    html 페이지를 실행할 때 이런 오류가 날 수 있다.

내 경우엔 html 파일에 주석을 달아서 생긴 오류였다.
나름 스마트하게 작업 해보겠다고 주석을 달아놨었는데 이 오류가 나의 작업을 방해했다. 애써서 적어놨던 주석들을 모두 지워서.. 해결해보자.

profile
개발일지

2개의 댓글

comment-user-thumbnail
2024년 4월 10일

안녕하세요 우연히 글을 읽게 되었습니다. ESM 개발과정 타이틀은 ESM 옥션 지마켓 관련 파이썬 프로그램 개발 인가요?

1개의 답글