가끔 우리는 남들과 색다른 무언가를 직접 만들어 보고 싶은 충동을 느낍니다. 그리고 인간의 본성상, 정성 들여 만든 결과물은 누군가와 나누고 싶어지죠.
파이썬 역시 이러한 소망을 충분히 실현해 줍니다. 파이썬으로 작성한 프로그램을 친구에게 공유하는 것도 가능합니다. 다만 한 가지 조건이 필요합니다. 상대방 컴퓨터에 같은 버전의 파이썬이 설치되어 있어야 하고, 프로그램에서 사용하는 모든 모듈도 함께 설치되어 있어야 합니다.
이런 번거로움 없이 프로그램을 배포하려면 어떻게 해야 할까요? 바로 cx_Freeze를 사용하면 됩니다. cx_Freeze는 파이썬 스크립트를 파이썬이 설치되지 않은 환경에서도 실행할 수 있는 독립 실행 파일로 변환해 주는 도구입니다.
먼저 명령 프롬프트(또는 터미널)에서 다음 명령으로 cx_Freeze 모듈을 설치합니다.
pip install cx_Freeze
1단계: 변환할 파이썬 프로그램 준비
첫 번째 단계는 실행 파일로 만들 파이썬 프로그램을 준비하는 것입니다. 여기서는 표준 라이브러리인 urllib과 re 모듈을 사용해 python.com 웹사이트를 파싱하는 간단한 프로그램을 예로 들겠습니다.
예제 코드
import urllib.request
import urllib.parse
import re
import time
my_url = 'https://www.python.com/'
my_values = {'s' : 'basics',
'submit' : 'search'}
my_data = urllib.parse.urlencode(my_values)
my_data = my_data.encode('utf-8')
my_req = urllib.request.Request(my_url, my_data)
my_resp = urllib.request.urlopen(my_req)
my_respData = my_resp.read()
my_paragraphs = re.findall(r'<p>(.*?)</p>', str(my_respData))
for p in my_paragraphs:
print(p)
time.sleep(20)
코드 마지막에 time.sleep(20)을 넣은 이유는, 프로그램이 곧바로 종료되기 전에 출력 결과를 20초 동안 확인할 수 있도록 하기 위함입니다.
이 프로그램을 "pythonCX_Freeze.py"라는 이름으로 저장합니다.
2단계: setup.py 파일 작성
다음 단계는 빌드 설정 파일을 만드는 것입니다. 파일 이름은 반드시 "setup.py"로 지정해야 합니다.
예제 코드
from cx_Freeze import setup, Executable
setup(name = "pythonCX_Freeze",
version = "0.1",
description = "",
executables = [Executable("pythonCX_Freeze.py")])
이 코드에서는 cx_Freeze 패키지에서 setup과 Executable을 임포트한 뒤, setup() 함수를 4개의 매개변수와 함께 호출합니다.
- name: 실행 파일의 이름입니다. 원하는 프로그램 이름을 지정합니다.
- version: 프로그램의 버전 번호입니다.
- description: 프로그램에 대한 간단한 설명입니다. 필요하지 않으면 빈 문자열로 두어도 됩니다.
- executables: 실행 파일로 변환할 대상 스크립트를 Executable() 함수에 전달합니다.
3단계: 빌드 실행
이제 cmd.exe(명령 프롬프트)를 연 뒤, setup.py와 스크립트 파일이 있는 디렉터리로 이동합니다.
그다음 아래 명령을 실행합니다.
python setup.py build
명령이 완료되면 build라는 디렉터리가 생성됩니다. 이 디렉터리 안에 또 다른 하위 디렉터리가 있고, 그 안에서 우리가 만든 실행 파일을 찾을 수 있습니다.
모든 단계를 올바르게 수행했다면, 실행 파일을 실행했을 때 python.com의 기본 검색 폼 결과를 파싱하여 화면에 출력하고, 20초 후 자동으로 종료되는 것을 확인할 수 있습니다.