프로그램 (PHP,Python)

Python 스크립트 실행파일 패키징하여 인터프리터 없이 독립적인 실행

날으는물고기 2024. 4. 30. 00:16

How To Convert Python File To Exe Using Pyinstaller - Python Guides

Python 스크립트를 실행 파일로 변환하는 과정은 스크립트를 독립 실행 가능한 파일로 패키징하여 Python 인터프리터 없이도 실행할 수 있게 하는 과정입니다. 이는 배포를 용이하게 하고, 최종 사용자가 Python 환경을 별도로 설정하지 않아도 되게 합니다. 다양한 도구들이 이 과정을 지원하지만, 가장 널리 사용되는 도구는 PyInstaller, cx_Freeze, Py2exe 등입니다. 여기서는 가장 표준적이고 널리 사용되는 PyInstaller에 대해 설명하겠습니다.

 

PyInstaller는 Python 스크립트를 Windows, Linux, Mac OS X 등 다양한 운영 체제에서 실행 가능한 단일 파일로 변환할 수 있는 도구입니다. 이 도구는 스크립트, 종속성, Python 인터프리터 및 라이브러리를 하나의 실행 파일로 묶습니다.

기본 사용법

  1. PyInstaller 설치: PyInstaller는 pip를 통해 쉽게 설치할 수 있습니다.
    pip install pyinstaller
  2. 실행 파일 생성: 커맨드 라인(명령 프롬프트 또는 터미널)에서 PyInstaller를 사용하여 Python 스크립트를 실행 파일로 변환합니다.이 명령은 your_script.py 스크립트를 분석하고, 필요한 파일들을 수집한 뒤, 실행 파일을 생성합니다.
    pyinstaller your_script.py
  3. 실행 파일 위치: 기본적으로 PyInstaller는 dist 디렉토리 내에 스크립트의 이름을 가진 폴더를 생성하고, 그 안에 실행 파일을 위치시킵니다.

중요 옵션

  • --onefile: 모든 것을 단일 실행 파일로 패키징합니다.
  • --noconsole: 콘솔 창 없이 GUI 애플리케이션으로 실행 파일을 생성합니다. Windows에서 주로 사용됩니다.
  • --add-data: 스크립트와 함께 추가 데이터 파일을 포함시킬 때 사용합니다. 사용법은 --add-data <src;dst> 형태로, src는 포함할 파일의 경로, dst는 실행 파일 내에서 파일이 위치할 경로입니다.
  • --icon: 실행 파일에 아이콘을 추가합니다. 사용법은 --icon=icon.ico입니다.

예제

GUI 애플리케이션을 위한 단일 실행 파일을 생성하고, 추가 데이터 파일을 포함시키는 명령입니다.

pyinstaller --onefile --windowed --add-data "src_path;dest_path" your_script.py

이 명령은 your_script.py를 사용자에게 보이지 않는 GUI 모드로 실행되는 단일 실행 파일로 패키징합니다. --add-data 옵션을 사용하여 필요한 추가 리소스나 설정 파일을 포함할 수 있습니다.

 

PyInstaller는 강력하고 유연한 도구이며, 다양한 옵션과 설정을 제공하여 복잡한 프로젝트의 요구 사항을 충족시킬 수 있습니다. 공식 문서는 사용 가능한 모든 옵션에 대한 자세한 정보와 고급 사용법을 제공합니다.

 

PyInstaller로 생성된 실행 파일이 백신 프로그램에 의해 오진되는 경우는 드물지 않습니다. 이는 PyInstaller가 실행 파일을 압축하고 포장하는 방식 때문에 발생할 수 있습니다. 백신 프로그램이 이러한 패키징을 악성 코드의 특징으로 오인할 수 있기 때문입니다. 다음은 이 문제를 해결하기 위한 몇 가지 방법입니다.

  1. 신뢰할 수 있는 디지털 서명 사용: 실행 파일에 신뢰할 수 있는 디지털 서명을 추가하는 것은 백신 프로그램에 파일의 안전성을 보증하는 방법 중 하나입니다. 디지털 서명은 인증 기관(CA)에서 발급받을 수 있으며, 이는 추가 비용이 발생할 수 있습니다.
  2. 백신 예외 목록에 추가: 개인 사용자의 경우, 생성된 실행 파일 경로를 백신 프로그램의 예외 목록에 추가할 수 있습니다. 하지만, 이 방법은 다른 사용자들에게는 적용하기 어려울 수 있습니다.
  3. 최신 PyInstaller 버전 사용: PyInstaller의 최신 버전은 이전 버전에서 발견된 문제를 수정하고 개선합니다. 따라서 가능하다면 PyInstaller의 최신 버전을 사용하는 것이 좋습니다.
  4. 백신 회사에 보고: 일부 백신 프로그램은 사용자로부터 오진된 파일에 대한 보고를 받고, 이를 검토하여 데이터베이스를 업데이트합니다. 따라서 해당 백신 회사에 파일이 오진되었다고 보고할 수 있습니다.
  5. 부트스트래핑 사용: 간단한 부트스트래핑 로더를 사용하여 본체 프로그램을 실행하는 방식으로 변경할 수 있습니다. 이 방법은 실행 파일을 두 개로 나누어 첫 번째 파일이 두 번째 파일을 실행하게 합니다. 이렇게 하면 백신 소프트웨어가 메인 로직을 포함한 두 번째 파일을 오진하는 것을 방지할 수 있습니다.
  6. 코드 구조 최적화: 때로는 코드 내 특정 패턴이나 구조가 백신 프로그램에 의해 악성으로 간주될 수 있습니다. 코드를 최적화하거나 변경하여 백신 소프트웨어의 탐지를 회피할 수 있습니다.

이러한 조치들은 다양한 상황에 따라 적용 가능성과 효과가 다를 수 있습니다. 중요한 것은 사용자나 다른 이해관계자들에게 소프트웨어의 안전성을 확신시킬 수 있는 방법을 선택하는 것입니다.

 

Python 스크립트를 실행 파일로 변환하는 데 PyInstaller 외에도 여러 도구를 사용할 수 있습니다. 여기에는 cx_Freeze, Py2exe, PyOxidizer, Nuitka 등이 포함됩니다. 각 도구마다 특징과 사용 방법이 다르며, 프로젝트의 요구 사항과 타겟 플랫폼에 따라 적합한 도구를 선택할 수 있습니다.

cx_Freeze

cx_Freeze는 Python 스크립트를 실행 파일로 변환하는 크로스 플랫폼 도구입니다. Windows, macOS, Linux를 지원하며, Python 3.5 이상과 호환됩니다.

설치

pip install cx_Freeze

사용법

cx_Freeze는 setup.py 스크립트를 사용하여 실행 파일을 생성합니다. setup.py 파일을 작성하여 프로젝트를 설정하고, 다음 명령어로 빌드합니다.

# setup.py 예제
from cx_Freeze import setup, Executable

setup(
    name="YourApp",
    version="0.1",
    description="Your App Description",
    executables=[Executable("your_script.py")]
)

빌드 명령:

python setup.py build

Py2exe

Py2exe는 Python 스크립트를 Windows 실행 파일로 변환하는 도구입니다. Python 2와 3 모두를 지원하지만, 주로 Windows 환경에서 사용됩니다.

설치

pip install py2exe

사용법

Py2exe도 setup.py 스크립트를 사용합니다. 예제 setup.py는 다음과 같습니다.

from distutils.core import setup
import py2exe

setup(console=['your_script.py'])

빌드 명령:

python setup.py py2exe

PyOxidizer

PyOxidizer는 Python 스크립트를 실행 파일로 변환하는 데 사용할 수 있는 더 최신 도구 중 하나입니다. 이 도구는 Rust로 작성되었으며, Python 인터프리터와 라이브러리를 단일 실행 파일로 패키징하여 고성능을 제공합니다. 크로스 플랫폼을 지원합니다.

설치 및 사용법

PyOxidizer의 설치와 사용법은 다소 복잡하며, PyOxidizer의 공식 문서와 GitHub 페이지에서 자세한 지침을 찾을 수 있습니다.

Nuitka

Nuitka는 Python 스크립트를 C 코드로 컴파일하고, 이를 실행 파일로 변환하는 도구입니다. 이 과정은 실행 속도를 향상시키고, Python 인터프리터 없이 실행 가능한 파일을 생성할 수 있게 합니다. Nuitka는 크로스 플랫폼을 지원합니다.

설치

pip install nuitka

사용법

Nuitka는 명령줄 인터페이스를 통해 사용됩니다. 기본 사용법은 다음과 같습니다.

nuitka --standalone --onefile your_script.py

각 도구마다 장단점과 특정 사용 사례에 더 적합한 경우가 있으므로, 프로젝트의 요구 사항에 맞는 도구를 선택하는 것이 중요합니다.

728x90