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

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

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

안녕하세요?


지난번 포스팅에서 어느정도 문제가 생긴것을 보여드렸습니다. 이렇게 몸의 역할을 하는 pytrader와 두뇌의 역할을 하는 RLTrader간에 통신이 원활하지 않다고 해야 할까요? 이 문제는 어떻게 해서든 간에 해결해야 하기 때문에, 일단은 다양한 시도를 한다고 오늘의 포스팅이 늦게 되었는데, 이번 포스팅 부터는 이 문제의 해결을 위해서 가지가지 방법을 시도해 보았고, 그 내용을 포스팅 해 보도록 하겠습니다.



먼저 데이터 베이스의 경로를 pytrader에서 제대로 지정되어 가는 것이 맞는지 알아보기 위해서 한번 알아보고자 합니다. 그래서 위 스크린샷처럼 마커를 놓도록 합니다.



일단 pytrader상에서는 제가 지정한 대로 제대로 데이터베이스의 경로가 지정이 되는 것을 PyCharm상에서는 확인할 수 있기는 있습니다.



그런데 어떻게 된 것인지는 몰라도, RLTrader를 작동 시키기만 하면, 먼저 modelPath.txt라는 수익모델의 경로를 지정해 주는 텍스트 파일을 RLTrader가 찾지 못하고 있다는 것을 알 수 있었습니다.



그래서 RLTrader로 가서, 먼저 realPath라고 하는 변수를 지정해 주는데, os.getcwd()라는 함수는 현재 작동중인 디렉토리를 알수 있게 만들어 주는 명령어입니다.



그리고 나서 위 스크린샷처럼 시작하자마자 먼저 위 스크린샷처럼 modelPath.txt라는 텍스트파일을 생성되어 있다면 읽으라는 명령을 내리게 되는데, 일단 제대로 읽는게 맞는지 확인하기 위해서 위 스크린샷처럼 한번 표식을 남겼습니다.




그런데 어떻게 된 것인지 에러 메세지에 뜨는 것도 위 스크린샷처럼 modelPath.txt를 찾을 수 없다고 하는 것 까지는 이해할 수 있지만, 문제는 exe파일이 있어야 하는 경로가 아니라, 예상외의 경로를 지정하는 것을 볼 수 있습니다.



그래서 한번 main.exe를 pytrader가 있는 폴더에다가 옮겨 주도록 해 보았으며, 여기 놔 두면 제대로 작동을 하는지을 알아보고자 합니다.



그랬더니, realPath라는 변수가 제대로 표시되는 것을 볼 수 있습니다. 즉, 제 생각에는 main.exe가 있는 다른 프로젝트의 폴더에 있는 txt파일을 인식할 줄 알았더니, 왜인지 모르게 pytrader가 있는 폴더에 있는 txt파일을 읽어 본다는 것을 알 수 있었습니다.



그래서 위 스크린샷처럼 먼저 os.path.abspath(__file__))이라는 명령어를 쓰고자 합니다. 이 명령어는 바로 실행이 되고 있는 컴퓨터상의 디렉토리를 의미하는데, 그 경로를 잡으라는 의미가 됩니다.



그런데 어떻게 된 것인지는 몰라도, main.exe가 있는 폴더가 아니라, pytrader가 있는 폴더를 계속해서 가르키는 것인지는 알 수가 없었습니다.




그래서 이번에는 --onefile이라는 옵션이 pyinstaller로 빌드하면서 생긴 것이 아닌가 해서, 한번 --onedir이라고 해서 파일이 아닌 하나의 디렉토리로 만들라는 옵션을 적용해서 프로젝트를 빌드해서 시도해 보고자 합니다.



그리고 잠시간 기다린 후에, 위 스크린샷처럼 main.exe라는 실행파일 하나만이 생성이 되었지, 특별한 변화가 있는 것이라는 생각이 들지는 않았습니다.



그리고 여기서도 역시나 pytrader가 있는 폴더에서 해당하는 txt파일을 찾고 있다는 것을 알 수 있었습니다. 왜인지는 모르겠습니다만, 아무래도 pytrader에서 RLTrader를 실행시키면, 이전에 프로젝트인 상태에서 작동시켰을 경우와는 다르게, pytrader가 있는 폴더가 자기가 작동하는 폴더라고 인식을 하는 듯 합니다.



그래서 이번에는 위 스크린샷처럼 pytrader에서 기존에는 RLTRader를 지정한 곳에서 움직이라고 했는데, 그걸 바꾸어서 위 스크린샷처럼 프로그램이 실행중인 폴더에서 제작이 되는 것으로 만들어 주도록 합니다.



이번에는 메세지가 바뀐 것을 볼 수 있는데, 어떻게 된 것인지는 모르겠습니다만, 테이블이 없다는 메세지를 띄우는 것을 볼 수 있었습니다. 어찌 되었건 간에 일단 장애물을 하나 넘어간 것은 넘어간 것이 맞는데, 문제는 또 다른 장애물에 부딪치게 되었다는 생각이 듭니다.

반응형