Python

ubuntu 에서 cx_Freeze 설치 및 사용 방법

guruzoa 2012. 2. 2. 15:02

Python으로 프로그램 짜면 전부 다 python을 실행한 상태에서 진행을 해야 하는 불편함이 있다. Python을 알아야 한다는 불편함
단독으로 실행하게 만들고 싶은 마음이 굴뚝 같다. 물론 나만 쓰는 프로그램이 아니라면 더욱 더 그렇겠죠?

 

그래서 찾아본 결과 Freeze, cx_Freeze, bb-freeze 등 여러개가 있다. 이 중에 가장 좋은 걸 해본 결과 Qt를 이용하지 않는다면 Freeze를 그냥 이용하고, Qt를 단독 실행으로 하고 싶다면 어쩔 수 없이 cx_Freeze를 사용해야 했다. Freeze로 Qt4도 지원하면 더욱 더 좋겠지만, 자료 검색 능력이 딸려 더 이상 진행하지 못했다.



1) Freeze는 python 소스 디렉토리에 Tools/Freeze라고 있으므로 사용법은 아래와 같다.
./Python-2.7.2/Tools/freeze/freeze.py -o dist hello.py

이러면 dist 디렉토리가 생기는데, make 치면 단독 파일 생성된다.

2) bb-freeze는 이전에 포스팅한 자료로 대신함

3) cx_Freeze는 일단 설치부터 해야한다.
첨부파일 받아서 README.txt 파일 읽어보면 설치방법은 아래와 같다
python MakeFrozenBases.py
python FreezePython.py --no-copy-deps FreezePython.py

이거 두개 실행하면 FreezePython 이라는 실행파일이 생성된다.

그리고 실행파일 만들려면
이렇게 하면 dist 디렉토리에 실행파일이 만들어진다.
./FreezePython --install-dir dist helloworld.py

그리고 PyQt4에서는 sip 모듈을 추가로 include 해야 된답니다. 아래와 같이...
./FreezePython --install-dir dist --include-modules sip helloworld.py

테스트에 사용한 python hello world
Example 1 : helloworld.py
print "hello world!!!\n"

Example 2 : helloword.py PyQt4 version
 import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
app = QApplication(sys.argv)
button = QPushButton("Hello World", None)
button.show()
app.exec_()

주의!) 마지막으로 cx_Freeze는 .so 인 라이브러리가 같이 생성되고 없으면 실행이 안됩니다. Freeze는 단독으로 그냥 실행됩니다. ㅎ

이거 하느라 5시간 걸렸슴다... 이제 프로그램 짜보러 추울발~!!!!

다음은 윈도우에서 하는 방법 포스트 예정입니다. ㅋㅋㅋㅋ