본문 바로가기
IT

파이썬(python3) 실행파일(exe) 만드는 법 - pyinstaller 설치부터 생성까지

by developer's warehouse 2024. 7. 22.

요즘에 파이썬으로 간단한 도구를 만들면서 취미생활을 하고 있습니다. 그런데, 이걸 다른 사람에게 전해주려니 그냥 주면 안 될 것 같아서 실행파일을 만들어서 주려고 합니다.

파이썬 스크립트를 실행 파일(exe)로 변환하면, 파이썬이 설치되지 않은 컴퓨터에서도 프로그램을 실행할 수 있습니다. pyinstaller는 이러한 작업을 쉽게 도와주는 도구입니다. 오늘은 pyinstaller를 설치하고, 파이썬 스크립트를 실행 파일로 만드는 과정을 단계별로 설명하겠습니다.

파이썬(python3) 실행파일(exe) 만드는 법 - pyinstaller 설치부터 생성까지 썸네일

1. pyinstaller 설치

pyinstaller를 설치하려면 먼저 파이썬이 설치되어 있어야 합니다. 파이썬으로 개발을 하고 있으니 파이썬은 당연히 있다고 가정합니다. 파이썬이 설치되어 있다면 아래 명령어를 사용하여 pyinstaller를 쉽게 설치할 수 있습니다.

pip install pyinstaller

위 명령어를 실행하면 pyinstaller가 설치됩니다.

pip install pyinstaller
Defaulting to user installation because normal site-packages is not writeable
Collecting pyinstaller
  Downloading pyinstaller-6.9.0-py3-none-win_amd64.whl.metadata (8.3 kB)
Collecting setuptools>=42.0.0 (from pyinstaller)
  Downloading setuptools-71.1.0-py3-none-any.whl.metadata (6.6 kB)
Collecting altgraph (from pyinstaller)
  Downloading altgraph-0.17.4-py2.py3-none-any.whl.metadata (7.3 kB)
Collecting pyinstaller-hooks-contrib>=2024.7 (from pyinstaller)
  Downloading pyinstaller_hooks_contrib-2024.7-py2.py3-none-any.whl.metadata (16 kB)
  Downloading packaging-24.1-py3-none-any.whl.metadata (3.2 kB)
Collecting pefile>=2022.5.30 (from pyinstaller)
  Downloading pefile-2023.2.7-py3-none-any.whl.metadata (1.4 kB)
Collecting pywin32-ctypes>=0.2.1 (from pyinstaller)
  Downloading pywin32_ctypes-0.2.2-py3-none-any.whl.metadata (3.8 kB)
Downloading pyinstaller-6.9.0-py3-none-win_amd64.whl (1.3 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.3/1.3 MB 9.2 MB/s eta 0:00:00
Downloading packaging-24.1-py3-none-any.whl (53 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 54.0/54.0 kB 1.4 MB/s eta 0:00:00
Downloading pefile-2023.2.7-py3-none-any.whl (71 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 71.8/71.8 kB 2.0 MB/s eta 0:00:00
Downloading pyinstaller_hooks_contrib-2024.7-py2.py3-none-any.whl (341 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 341.3/341.3 kB 4.2 MB/s eta 0:00:00
Downloading pywin32_ctypes-0.2.2-py3-none-any.whl (30 kB)
Downloading setuptools-71.1.0-py3-none-any.whl (2.3 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.3/2.3 MB 9.3 MB/s eta 0:00:00
Downloading altgraph-0.17.4-py2.py3-none-any.whl (21 kB)
Installing collected packages: altgraph, setuptools, pywin32-ctypes, pefile, packaging, pyinstaller-hooks-contrib, pyinstaller
  WARNING: The scripts pyi-archive_viewer.exe, pyi-bindepend.exe, pyi-grab_version.exe, pyi-makespec.exe, pyi-set_version.exe and pyinstaller.exe are installed in 'C:\Users\ALTIBASE\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\Scripts' which is not on PATH.
  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
Successfully installed altgraph-0.17.4 packaging-24.1 pefile-2023.2.7 pyinstaller-6.9.0 pyinstaller-hooks-contrib-2024.7 pywin32-ctypes-0.2.2 setuptools-71.1.0

[notice] A new release of pip is available: 24.0 -> 24.1.2
[notice] To update, run: C:\Users\ALTIBASE\AppData\Local\Microsoft\WindowsApps\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\python.exe -m pip install --upgrade pip

 

2. 파이썬 스크립트 준비

먼저, 실행 파일로 변환할 파이썬 스크립트를 준비합니다. 예를 들어, hello.py라는 파일을 생성하고 다음과 같은 내용이 있다고 가정하고 설명해 드리겠습니다.

# hello.py
print("Hello, World!")

3. pyinstaller로 실행 파일 생성

이제 pyinstaller를 사용하여 hello.py 파일을 실행 파일로 변환해보겠습니다. 터미널(명령 프롬프트)을 열고 스크립트 파일이 있는 디렉터리로 이동한 다음, 아래 명령어를 실행합니다.

pyinstaller --onefile hello.py

이 명령어는 --onefile 옵션을 사용하여 모든 파일을 하나의 실행 파일로 만듭니다. 실행 후, dist 디렉토리 안에 hello.exe 파일이 생성된 것을 확인할 수 있습니다.

그런데... 저의 경우 설치하자마자 pyinstaller가 path에 잡혀있지 않아서 다음과 같은 에러를 내고 있습니다.

pyinstaller --onefile .\sellout.py
pyinstaller : 'pyinstaller' 용어가 cmdlet, 함수, 스크립트 파일 또는 실행할 수 있는 프로그램 이름으로 인식되지 않습니다. 이름이 정확한지 확인하고 경로가 포함된 경우 경로가 올바른지 검증한 다음 다
시 시도하십시오.
위치 줄:1 문자:1
+ pyinstaller --onefile .\sellout.py
+ ~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (pyinstaller:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

 

이 경우 다음과 같이 python을 통해 pyinstaller를 직접 수행해 줄 수 있습니다. 저도 한참 헤맸는데 아래와 같이 하면 고민할 필요가 없습니다.

python3 -m PyInstaller --onefile .\sellout.py

실행 잘되고 한참 지나서 exe 파일 잘 만들어 주었습니다.

python3 -m PyInstaller --onefile .\sellout.py
2037 INFO: PyInstaller: 6.9.0, contrib hooks: 2024.7
2038 INFO: Python: 3.12.4
2110 INFO: Platform: Windows-11-10.0.22631-SP0
2110 INFO: Python environment: C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.12_3.12.1264.0_x64__qbz5n2kfra8p0
2114 INFO: wrote C:\Users\ALTIBASE\work\web-tools\ss-crawling\sellout.spec
2153 INFO: Module search paths (PYTHONPATH):
['C:\\Users\\ALTIBASE\\work\\web-tools\\ss-crawling',
 'C:\\Program '
 'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.12_3.12.1264.0_x64__qbz5n2kfra8p0\\python312.zip',
 'C:\\Program '
 'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.12_3.12.1264.0_x64__qbz5n2kfra8p0\\DLLs',
 'C:\\Program '
 'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.12_3.12.1264.0_x64__qbz5n2kfra8p0\\Lib',
 ....
 79505 INFO: Copying bootloader EXE to C:\Users\ALTIBASE\work\web-tools\ss-crawling\dist\sellout.exe
79825 INFO: Copying icon to EXE
79908 INFO: Copying 0 resources to EXE
79909 INFO: Embedding manifest in EXE
79990 INFO: Appending PKG archive to EXE
80151 INFO: Fixing EXE headers
80644 INFO: Building EXE from EXE-00.toc completed successfully.

4. 생성된 실행 파일 확인

이제 dist 디렉터리 안에 있는 hello.exe 파일을 실행해 보세요. 터미널이나 파일 탐색기에서 hello.exe 파일을 실행하면 "Hello, World!" 메시지가 출력됩니다.

저는 sellout.py라는 파일도 생성해 보았는데 다음과 같이 dist 디렉터리에 sellout.exe 파일이 잘 생성된 것을 확인하실 수 있습니다.

dist 디렉토리
sellout.exe 파일 생성된 것

 

5. 추가 옵션

pyinstaller에는 다양한 옵션이 있습니다. 몇 가지 유용한 옵션에 대해서 설명해 드리겠습니다.

  • --onefile: 모든 파일을 하나의 실행 파일로 만듭니다.
  • --windowed 또는 -w: 콘솔 창을 숨기고 GUI 애플리케이션을 만듭니다.
  • --icon=<아이콘 파일>: 실행 파일에 아이콘을 설정합니다.

예를 들어, 아이콘을 설정하고 콘솔 창을 숨기려면 아래와 같이 명령어를 사용할 수 있습니다.

pyinstaller --onefile --windowed --icon=app.ico hello.py

 

6. 주의사항

pyinstaller로 생성된 실행 파일은 파이썬 버전과 호환되는 운영 체제에서만 실행할 수 있습니다. 예를 들어, Windows에서 생성한 실행 파일은 Windows에서만 실행 가능합니다.

저는 리눅스에서 개발해서 Windows exe 파일로 만들 수 없는지 알아보았는데, 이렇게는 안됩니다.

 

스크립트가 사용하는 모든 외부 라이브러리와 종속성을 포함해야 합니다. pyinstaller는 대부분의 경우 자동으로 이를 처리하지만, 일부 경우 수동으로 추가 설정이 필요할 수 있습니다.

대표적인 것이 chrome의 selenium이 있습니다.

 

결론

이제 pyinstaller를 사용하여 파이썬 스크립트를 실행 파일로 변환하는 방법을 알게 되었습니다. 이를 통해 파이썬이 설치되지 않은 환경에서도 손쉽게 프로그램을 배포하고 실행할 수 있습니다. pyinstaller의 다양한 옵션을 활용하여 원하는 형태로 실행 파일을 만들어보세요.

facebook twitter kakaoTalk kakaostory naver band shareLink