문제 발견
기존에 쓰던 파이썬 플러그인을 그냥 하나의 스크립트 실행 파일로 빼려고 pyinstaller --onefile을 하게 되었다.
기존 python 스크립트는 출력되는데 바이너리 파일로 바꿔서 사용하면 print() 이나 std.out 등이 출력되지 않는다.
이유를 찾아보니 pyinstaller는 기본적으로 콘솔없이 사용하게 된다. 즉 버퍼는 존재하지만 보내는 기능이 없어진거나 마찬가지다.
--windowed : 이 옵션이 자동으로 들어가 있어서 이는 위와 같이 보내는 기능이 없어진다.
그래서 --noconsole 옵션을 넣어줘야한다.
pyinstaller --onefile --noconsole "myfile.py"
대충 위처럼 올리면 된다.
하지만 --noconsole을 하게 되면 cmd창이 일시적으로 띄워졌다가 내려가는 현상이 있을수도 있다.
그럴땐 그냥 아래처럼 출력버퍼를 강제로 보내서 데이터를 출력하면 된다.
print("hello",flush=True)
이를 활용해서 python을 사용한 exe파일에서 json을 반환하게 하는것이 가능하니 잘 사용해도 좋을 듯 하다.
같은 exe파일로 만들어져도 앱으로 인식되어서 신기했다. 그래서 exe파일을 실행해도 해당 실행하는 위치가 아닌 windows 운영체제 기반에서는 Temp 파일에서 실행되는데 경로를 사용한 로직이 있으면 따로 설정해줘야한다.