[Python] 프로젝트 ver.1.2 그리고 완성

파이썬 봇 ver 1.0 개발 리뷰
ver.1.0에서 끝날 줄 알았던 이전 프로젝트 후기는 여기를 클릭..


체감상 주요 기능을 개발하던 1.0버전 만들기 때보다 1.2 버전으로 업그레이드 시키는 과정이 훨씬 고통스러웠던 것 같다.. ^_ㅠ 처음 해보는 작업이라 그런가

ver.1.2의 주요 포인트는 다음과 같다.

  • 사용자 로그를 오라클 클라우드 DB에 남기기 + 그렇게 DB에 저장된 데이터들을 프로그램 실행시 불러와서 활용하기!
  • 완성된 결과물을 실행파일로 만들어서, 개발 환경이 세팅되지 않은 곳에서도 사용할 수 있도록 하기


<python chatbot ver.1.2 기능도>

추가된 기능

  • 봇을 시작하면 사용자 이름 입력받음 => 사용자 이름, 접속시간, 접속위치 DB에 저장
  • 점심메뉴추천 : 사용자에게 메뉴 입력받아서 DB에 저장, DB에서 메뉴들 불러와서 랜덤추천
  • 미니게임 : score 추가, 게임 종료시 score DB에 저장
  • 사용자가 검색한 뉴스키워드 DB에 저장




Pyinstaller로 파이썬 파일을 실행파일로 만들기

파이썬과 오라클 Cloud DB 연결하는 방법 은 저번 포스팅 참고

Pyinstaller라는 프로그램을 사용하면 파이썬 파일을 간단히 실행파일로 만들 수 있다고 한다.

  1. cmd창에서 pip install pyinstaller 해서 다운로드 받기
  2. 실행파일로 만들고 싶은 파이썬 파일이 있는 디렉토리로 이동
  3. pyinstaller 파일명.py 입력하면 끝.

우리의 프로그램의 경우 test.py라는 파일만 실행하면 다른 모든 파일들을 import해와서 프로그램이 동작하므로, pyinstaller -F test.py 명령어로 실행파일을 만들었다.
-F는 사용된 모든 라이브러리들을 다 따로 만들지 않고 exe 파일 1개로 합치고 싶을 때 사용하는 옵션이다. (더 많은 옵션들은 아래 링크 참조)
https://pyinstaller.readthedocs.io/en/stable/usage.html

🤦‍♀️ 끝없는 에러 발생 시작

에러 1)
exe파일을 만드는중

...

'Module %r has no attribute %r' % (module_name, attr_name))
AttributeError: Module 'PyQt5' has no attribute '__version__'

이런 오류가 뜨면서 자꾸 실행이 중지되었다..
반나절동안 구글링을 해봐도 해결책을 못찾았는데ㅠㅠ
다음날 그냥 pip install pyqt5 해서 pyqt5를 최신 버전으로 재설치하니까 해결되었다 ㅋ..
(결과적으로 pyinstaller == 4.4, pyqt5 == 5.15.4를 이용하였다!)

에러 2)
그걸 해결하고 나니 다른 팀원들은 다 성공하는데, 나만 다른 오류가 뜨면서 또 실행이 멈췄다.

...

Loading module hook 'hook-gevent.py' from ...

하다가 한참 아무 변화도 없더니

...

timed out after 60 seconds

이러고 또멈췄당!^^

이건 정확한 원인을 찾지는 못했고 그냥 아나콘다를 재설치하는 것으로 해결했다ㅠ
써놓고보니 몇줄안되네.. 진짜 오랫동안 고민한 것 같았는데...

오라클 instant client 연결을 포함한 파이썬 파일을 exe로 만드려면..?

exe 파일 만드는데까지는 성공했지만 더 근본적인 문제가 있었다.
오라클 클라우드 DB와 연결하는 부분인

cx_Oracle.init_oracle_client(lib_dir="C:\oracle\instantclient_19_11")

이 부분에서 오류가 발생했다.
만들어진 실행파일이 오라클 클라우드DB와 연결해주는 dll파일을 못 읽어서 그런것 같다(고 강사님이 말씀하셨다.. 난 왠지도 몰랐어..)

그런데 이 문제는 생각보다 간단하게 해결되었다 (물론 내가 해결한 것이 아니다. 강사님이 알려주심)
test.exe파일을 instantclient_19_11 폴더 안에 넣어놓고 실행하면 해결되는 문제였다. exe파일과 dll 파일이 같은 디렉토리 내에 있어야 읽을 수 있기 때문에..!
오라클 instant client 파일까지 실행파일에 합쳐서 넣어보려고 했지만 아직 성공하지 못했다. 그건 다음 기회에..! 아시는 분 피드백 대환영입니다

💕 드디어 드디어 완성

완성 코드와 실행파일은 https://github.com/hyemin-jang/python_chatbot 에서 확인할 수 있습니다!!

💎 첫 팀프로젝트를 마치고

좋은 팀원분들을 만나 2주동안 작업도 너무 재미있게 하고, 배워가는 것도 많았다.
파이썬 기초문법만 가지고 만든, cmd창에서만 실행되는 간단한 프로그램이지만, 어쨌든 처음으로 하나의 완성된 프로그램이라는 것을 만들어보면서 코드 짜는데도 나름대로 익숙해지고, 몇몇 교훈들도 얻은 것 같다.

  • 알아보기 쉬운 코드가 좋은 코드다. 다른 사람(혹은 미래의 나)이 누가 봐도 읽기 쉽게! 각 기능은 하나의 함수로 만들고, 코드 구조는 통일하고, 변수명도 잘쓰자!
  • 나의 멋진 코드를 혼자만의 보물상자에 가둬놓을 것이 아니라면.. 코드 짜는 만큼이나 technical report 쓰는데도 신경을 쓰자..

앞으로의 더큰 프로젝트를 위한 작고 귀여운 기반이 되길 바라면서
진짜끝!

좋은 웹페이지 즐겨찾기