본문 바로가기
무모한 도전-주식 인공지능 만들기

다시금 시작해 보는 exe파일 만들기 작전

by 인터넷떠돌이 2019. 1. 9.
반응형

안녕하세요?


지난번 포스팅에서 어떻게 된 셈인지는 몰라도, 제대로 RLTrader가 작동을 하지 않는 것을 보았습니다. 이제까지는 PyCharm으로 2개의 프로젝트를 열어둔 다음에 작동을 시켰는데, 이게 제대로 작동을 하지 않는 모양으로 보입니다. 실제로 포스팅에 올리지는 않았지만, RLTrader 프로젝트를 파이참상에서 열어두지 않고 pytrader에서 실행시키면, pytrader 프로젝트의 윈도우에서 나타나면서 keras가 없어서 실행이 안된다는 메세지만 나오는 것을 목격한 적이 있었습니다.


그래서 아무래도 파이참상에서 다른 프로젝트를 열어놓고 서로 실행시키라는 것은 그다지 좋은 생각이 아니고, 이번에는 pyinstaller를 이용해서 RLTrader를 빌드한 다음에 다음 작업에 들어가 봐야 겠다는 생각이 들었습니다.



일단 기존의 pyinstaller를 실행시킨 아나콘다 프롬프트의 화면입니다. 명령어로는 pyinstaller --windowed --onefile main.py라는 식으로 입력을 해서 성공적으로 빌드가 끝났다는 메세지를 볼 수 있었습니다.



그리고 실제로 한번 main이라는 exe파일이 해당하는 프로젝트의 폴더 안에 생성이 되어 있는 것을 확인할 수 있었습니다.



이제 이 프로그램을 기존의 pytrader폴더로 복사해서 붙여넣기 한 다음에, 다음 단계로 들어가 보도록 합니다.



그런데 원인을 모르는 이유로 인해서 전혀 작동을 시킬 수 없다는 것을 알 수 있었습니다.




일단 spec파일이라고 해서, 저도 정확한 용도는 모르지만, pyinstaller로 프로젝트를 exe파일로 빌드하기 위해서 필요한 설계도에 해당하는 파일이 있다고 합니다. 이걸 워드패드로 열어봐서 살펴 보아도, 그다지 큰 이상이 있는지는 잘 모르겠습니다.



일단 한번 다시 만들어 보는데, 이번에는 --windowed라는 명령어를 빼서, 콘솔창이 뜨도록 만들어 주었습니다. 그렇게 해서 보았더니, modelPath.txt라는 파일을 찾을 수 없다고 해서 나오는 에러였습니다.



그래서 다음으로는 위 스크린샷처럼 한번 main.exe가 있는 폴더에다가 modelPath.txt와 같이 필요한 텍스트 파일을 만들어 준 다음에, 다시 실행을 해 보니까, 이번에는 위에서 처럼 log파일이 없다는 이유로 에러가 뜨는 것을 볼 수 있었습니다.



그래서 먼저 어떻게 해서 이 에러를 수정할 수 있느냐 하면, 먼저 RLTrader가 있는 폴더로 가서, 위 스크린샷처럼 main.spec파일을 한번 열어 보도록 합니다. 여기다가 위 스크린샷처럼 첫 머리에 added_files라는 항목을 추가하도록 합니다.




그런데 spec파일을 변경하고 나서 저장한 다음에, 다시 실행을 시켜 보았지만 아무런 변화가 없는 것을 확인할 수 있었습니다.



그리고 다시 main.spec파일을 워드패드로 열어서, 위 스크린샷처럼 전에는 없었는 datas = added_files 라는 형식으로 넣어 주도록 합니다.



하지만 결과는 달라지는 것이 없기는 없었습니다.



그래서 spec파일을 변경한 다음에 어떻게 하느냐 하면, 먼저 위 스크린샷과 같은 방법으로 새로 프로젝트를 독립적인 다른 PC에서도 실행이 가능한 형태로 바꾸어 줘야 하는데, 먼저 위 스크린샷과 같이 pyinstaller --onefile main.spec이라는 형식을 써 주도록 합니다.




일단 에러가 뜨는 것을 관찰한 다음에, 아무래도 빌드에는 실패한 것이 아닌가 라고 생각을 먼저 하기는 했습니다.



어디가 문제였나 하면, 위 스크린샷처럼 datas= 항목은 한줄이고, 다른 줄에 있었던 datas=[]이라는 줄은 삭제해 주었습니다. 그리고 나서 다시 pyinstaller를 찾아가도록 합니다.



먼저 첫줄에 입력하기로는 pyinstaller --noconfirm --log-level=WARN ^ 인데, 저는 처음으로 ^ 를 윈도우 상에서 입력하고 엔터키를 치면 계속 연결된다는 것은 처음 알았습니다. 그리고 이어서 나오는 줄에서는 --onefile --nowindow ^ main.spec이라는 형식으로 입력을 해 줍니다.



일단 마무리는 석연치 않게 마무리가 된 것 같다는 생각이 듭니다만, 그래도 마무리는 되었는 것이라는 생각이 드므로, 일단 윈도우 탐색기를 열어서 확인에 들어가 버리게 될 것이다.



실제로 RLTrader가 있는 폴더안에 있는 하위폴더인 dist라는 폴더 안에 main.exe라는 파일이 생성이 된 것을 확인할 수 있었습니다. 이렇게 하는 것으로 일차적인 작전이 끝나기는 했지만, 아직 이걸 실행해 보고 하는 단계는 시작도 하지 않았기 때문에 가야할 길이 멀다는 생각이 듭니다.

반응형