Python, pyinstaller

PyInstaller로 Python 코드를 실행 파일로 변환하기

Python은 훌륭한 프로그래밍 언어이지만, 최종 사용자에게 배포할 때 종종 문제가 발생합니다. 사용자가 Python과 필요한 모든 라이브러리를 설치해야 한다는 점은 큰 진입장벽이 될 수 있습니다. 이런 문제를 해결하기 위해 PyInstaller를 사용할 수 있습니다.. PyInstaller는 Python 스크립트를 독립 실행형 실행 파일로 변환하여, 최종 사용자가 Python을 설치하지 않고도 프로그램을 실행할 수 있게 해줍니다.

해당 라이브러리를 사용하기 위해서는 python3.8 이상의 버전을 사용해야 합니다.

PyInstaller 설치하기

시작하기 전에 PyInstaller를 설치해야 합니다. pip을 사용하여 쉽게 설치할 수 있습니다:

기본 사용법

가장 기본적인 사용법은 매우 간단합니다:

이 명령어는 script.py 파일을 분석하고, 필요한 모든 종속성을 포함하는 실행 파일을 생성합니다. 기본적으로 PyInstaller는 다음과 같은 디렉토리를 생성합니다:

  • build/: 빌드 과정에서 생성되는 임시 파일이 저장됩니다.
  • dist/: 최종 실행 파일과 필요한 지원 파일이 저장됩니다.

또한 .spec 파일도 생성되는데, 이것은 빌드 구성을 정의하는 Python 스크립트입니다.

주요 옵션 소개

PyInstaller는 다양한 옵션을 제공하여 빌드 과정을 사용자 정의할 수 있습니다. 가장 많이 사용되는 옵션들을 살펴보겠습니다. 내가 작성한 코드가 script.py 파일이라면, 최종 실행 파일을 생성할 때 아래와 같은 옵션을 사용할 수 있습니다.

1. --onefile 또는 -F, --ONEDIR 또는 -D 옵션

단일 실행 파일로 패키징하려면 다음 옵션을 사용합니다:

이 옵션은 모든 종속성과 리소스를 하나의 .exe 파일(Windows) 또는 실행 파일(macOS, Linux)로 묶어줍니다. 이는 배포가 간편하지만, 실행 파일의 크기가 커지고 시작 시간이 느려질 수 있습니다.

실행이 늦어지는 문제를 해소하기 위한 방법 중에 하나가 –onedir 또는 -D 입니다. 관련 파일을 하나의 디렉토리로 구성하는 방법입니다. 최초 1회 실행 시간이 늦어지는 반면 이후부터는 빠른 재실행이 가능해집니다.

2. --windowed 또는 -w 옵션

GUI 애플리케이션을 만들 때는 콘솔 창 없이 실행하고 싶을 것입니다:

이 옵션은 Windows에서는 콘솔 창이 나타나지 않게 하고, macOS에서는 앱 번들을 생성합니다.

3. --name 옵션

실행 파일의 이름을 지정할 수 있습니다:

4. --icon 옵션

실행 파일에 아이콘을 추가할 수 있습니다:

Windows에서는 .ico 파일, macOS에서는 .icns 파일, Linux에서는 .png 파일을 사용합니다.

5. --add-data 옵션

스크립트와 함께 추가 파일이나 디렉토리를 포함시킬 수 있습니다:

첫 번째 경로는 소스 파일/디렉토리이고, 두 번째 경로는 실행 파일 내의 목적지 경로입니다. Windows에서는 세미콜론(;)으로, macOS와 Linux에서는 콜론(:)으로 구분합니다.

6. --add-binary 옵션

바이너리 파일(예: DLL, 공유 라이브러리)을 추가할 때 사용합니다:

7. --hidden-import 옵션

PyInstaller가 자동으로 감지하지 못하는 종속성을 명시적으로 추가할 수 있습니다:

8. --exclude-module 옵션

불필요한 모듈을 제외하여 실행 파일 크기를 줄일 수 있습니다:

9. --clean 옵션

빌드하기 전에 PyInstaller 캐시와 임시 파일을 제거합니다:

10. --noupx 옵션

UPX(실행 파일 압축 도구)를 사용하지 않도록 설정합니다:

11. --runtime-hook 옵션

실행 시점에 실행되는 스크립트를 추가할 수 있습니다:

12. --key 옵션

바이트코드를 암호화하여 리버스 엔지니어링을 어렵게 만듭니다:

옵션 조합 예시

여러 옵션을 조합하여 사용할 수 있습니다:

이 명령어는 GUI 응용 프로그램을 단일 실행 파일로 만들고, 사용자 지정 아이콘을 적용하며, resources 폴더의 내용을 포함시킵니다.

.spec 파일 사용하기

.spec 파일은 빌드 과정을 더 세밀하게 제어할 수 있게 해줍니다. PyInstaller를 한 번 실행하면 .spec 파일이 생성되며, 이를 수정하여 빌드 설정을 사용자 정의할 수 있습니다.

문제 해결 팁

1. 누락된 모듈 오류

PyInstaller가 모든 종속성을 자동으로 감지하지 못할 수 있습니다. 이런 경우 --hidden-import 옵션을 사용하세요:

2. 파일 경로 문제

실행 파일 내에서 파일 경로를 올바르게 참조하려면 다음과 같이 코드를 수정해야 합니다:

3. 디버깅을 위한 콘솔 출력 보기

--windowed 옵션을 사용했을 때도 로그를 확인하려면, 로그 파일에 출력을 리디렉션하는 코드를 추가하세요:

결론

PyInstaller는 Python 애플리케이션을 배포하는 강력한 도구입니다. 다양한 옵션을 통해 배포 요구사항에 맞게 실행 파일을 사용자 정의할 수 있습니다. 이 글에서 소개한 옵션들을 활용하여 최종 사용자에게 최적화된 실행 파일을 제공해보세요.

Python 개발자로서 PyInstaller를 마스터하면 프로젝트 배포 프로세스가 훨씬 간소화되고, 최종 사용자 경험이 크게 향상될 것입니다.

출처

https://pyinstaller.org


게시됨

카테고리

작성자

댓글

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다