본문 바로가기

공부/Python21

[python] pyinstaller 와 빌드 후 ini 환경변수 읽기(konfig) INI(INIialization) 파일 환경변수파일을 읽고 사용하는 방법 pyinstaller로 python파일을 빌드 한 후에 환경설정(IP 주소라던지, PORT 라던지..)을 바꿔야 하는 경우가 있다. 내 경우에는 FastAPI 서버를 배포하는데, SERVER의 주소와 DB의 주소가 계속 바꾸면서 QA가 테스트해야 했기 때문에 매번 환경변수를 바꿔가며 빌드하는건 좋은방법이 아니라 생각했다. 그래서 환경변수파일을 따로 빼서 읽는 방법을 선택했고 찾아보니 konfig 라는 라이브러리가 있었다. 설치 pip install konfig 사용방법 (1 / 2). 먼저 import 하기 사람마다 환경이 다르겠지만, BASE_DIR 를 지정해주는 이유나 .spec파일에 대한 설명은 아래 포스팅을 참조하면 좋을 것.. 2021. 6. 19.
[python] pyinstaller 일곱번의 삽질 for uvicorn + FastAPI pyinstaller 란.. python 파일을 패키징해서 executable 형식으로 만들어주는 아주 좋은 도구이다. 사용방법이 굉장히 간단해 보이지만, 실제로 적용하고 세부 설정을 하다보니 너무 할게 많았고 디버깅이 잘 되지 않아 삽질을 많이 했다. 심지어 포스팅 된 글들도 상대적으로 적어서.. 일단 필수적으로 알고 가야할게 있다. window / Linux 둘다 pyinstaller를 사용할 수 있다! 다만 당연한 이야기일 수 있지만, window에서 빌드한것은 linux 에서 사용할 수 없고, linux에서 빌드한것은 windows 에서 사용할 수 없다. (java gradle로 war파일을 만들면 window, linux 상관없이 동작하는거에 비해 불편하긴 하다.) 설치 pip install p.. 2021. 6. 18.
[python] 클래스를 함수처럼 사용할수 있게.. __call__함수 python memoize를 공부하다가 __call__함수에 대해 먼저 확실하게 이해하고 가려고 정리 하게 되었다. __call__ 이 함수는 클래스의 객체를 호출할 수 있게 만드는 함수이다. class Callmsg: def __init__(self): self.msg = "__call__ Test" # 아래 함수를 클래스에 추가 def __call__(self): return self.msg 위와 같은 __call__객체를 가진 class가 있을 때, __init__에서 msg변수에 문자열(__call__ Test)을 할당해 주고 일반적인 방법으로 msg를 출력하는 방법은 아래와 같다. obj = Callmsg() print(obj.msg) # '__call__ Test' 하지만 __call__ 함수.. 2021. 6. 15.
[Python] @Decorator 파이썬 @데코레이터 포스팅하기에 앞서.. 처음에 Decorator라는 기능을 접했을때, 그래서 이게뭐? 이게 필요한가..? 이런멍청한 생각을 많이 했었다. 개념을 찾아보고 사례를 봐도, 굳이...? 라는 생각도 있었고..(사실 잘 이해를못한거였음) 근데 내가 필요해지니 쉽게느껴지더라..!! 회사에서 일을 하다가, 특정 몇가지 함수들의 실행시간을 측정해야 할 일이 있었다.. 사실 이러한 상황에서 데코레이터를 사용하는게 과연 옳은 일일까? 라는 고민은 아직도 있다. 사수가 없어서 슬프다.. (혹시 이런 방법이 옳지 않다면 댓글로 알려주시길 부탁드립니다ㅠㅠ) 내가 이해한 Decorator 정의 말 그대로 함수 자체를 인자값으로 받아 그 함수를 실행할때 마다 꾸며주는 함수이다. 사용 이유! 내가 원하는 함수만 골라서 실행 시간을 .. 2021. 6. 11.