Backend/Python

Pyinstaller를 사용해서 python 실행 파일 만들고, window 서비스에 등록하기

amelia-suyeon 2024. 1. 15. 14:56

필자는 window에 python을 배포해야 했는데, 이때 사람들이 실행파일을 사용한다는 것을 알게되었다.

 

실행 파일로 만들기 위해서는 pyinstaller 라는 라이브러리가 필요하다. 

사용방법은 아주 간단한데, 필자는 FastAPI를 묶는 과정에서 몇번의 오류가 발생했지만 결국 해결하였다!

 

먼저, 가상환경 상태에서 pip install pyinstaller를 한다.

그 이후, main.py가 있는 경로에서 (cmd창) 예를 들면 C:\test> pyinstaller -F main.py 이런식으로 명령어를 쳐주면 완성!

 

( > 필자는 -F 옵션을 사용했는데, 실행 파일로 묶을 때 1개로 깔끔하게 나오도록 하는 옵션이다. 그 외 다른 옵션들도 있으니 pyinstaller 사용법으로 검색하면 좋을것 같다.) 

 

완료 되고 나면 폴더 내에서 build & dist 라는 폴더가 생성된 것을 알 수 있다.

 

 

실행 파일이 잘 작동되는지 알고 싶으면 dist 폴더에 main.exe 파일을 클릭해서 실행한다 -> 이때 아무런 문제 없이 작동된다면 이 파일을 그대로 등록해도 좋다! 

 

 

이제 이 실행파일과 nssm을 이용하여 윈도우 서비스에 등록해보도록 하겠다!

 

1. NSSM 홈페이지에 들어가서 원하는 버전을 다운받는다. 

http://nssm.cc/download

 

2. 다운받은 파일의 압축을 풀고, C드라이브에 놓아둔다(위치는 편한 대로 할 것)

 

3. CMD에 들어간다.

 

4. nssm-2.24.exe 파일이 있는 곳으로 이동한다. (필자의 경우 win64에서 진행)

 

5. nssm.exe install <등록할 service 이름>   

 

6. 위와 같이 입력하면 아래와 같은 GUI가 등장한다.

-> 실행 파일이 있는 곳을 path와 startup directory에 등록한다. 

 

이제, 등록한 서비스를 실행시켜 보도록 하자

 

7. nssm start python_backend 

 

8. 이후, url에 접속해서 확인 하며, 윈도우 서비스에 들어가서 한번 더 확인 가능하다.

 

 

위 처럼 자동으로 잘 실행되고 있다면 성공이다! 이제, 컴퓨터를 껐다가 켜면 자동실행 될 것이다!

그 외, 서비스를 중단하거나 삭제 등등을 하고 싶다면 아래의 옵션을 따라해보자.

(필자는 주로 등록, 시작, 중단, 삭제를 많이 사용했다.)

 

멈추고 다시 시작 반복..!

 

명령어 설명
nssm install 서비스이름 서비스 등록
nssm start 서비스이름 등록된 서비스 시작 
nssm stop  서비스이름 등록된 서비스 중단
nssm remove 서비스이름 등록된 서비스 삭제
nssm status 서비스이름 등록된 서비스 상태 확인 
nssm restart 서비스이름 등록된 서비스 다시 시작 

 

어쩌다 윈도우에 배포하게 되었는데, 처음해보는거라 조금 힘들었지만, 성공했을때  또 하나 해내었다는 것이 가장 좋았던 것 같다.