안녕하세요! 오늘은 조금 무겁게 시작하겠습니다.
python을 공부한지 언 3주 째 되가고 있는데...
이번에 처음으로 exe파일을 만들어 보았습니다...
python이 high level언어이지만, exe이를 만들 때는 정말 무겁다는 것을 이번에 뼈저리 느끼게 됐습니다.
c언어를 할 때는 디버깅을 하면 자동으로 exe만들어서 몰랐는데 파이썬은 정말 어려웠습니다.
많은 사람들이 pyinstaller로 exe파일을 만드시길래 저 또한 pyinstaller를 사용하였는데...
이틀동안 자존감이 떨어졌습니다...
결국 pyinstaller를 포기하고 다른 라이브러리인 cx_freeze라는 구세주를 맞이했습니다.
이 글은 pyinstaller에 지친 사람들을 위해 쓰는 글입니다.
아! 그리고 이번에 jupyter notebook에서 pycharm으로 개발환경을 바꿨습니다.
나중에 pycharm 사용법에 대해 글을 쓰도록 하겠습니다.
시작하겠습니다!
우선 cx-Freeze 깔도록 합시다. 오늘 기준으로 6.1버젼을 사용합니다.
cx-Freeze를 깔았다면, setup.py를 만들어야 합니다.
예시로 제가 만든 프로그램을 기준으로 설명하겠습니다.
from cx_Freeze import setup, Executable
import sys
buildOptions = dict(packages = ["matplotlib","scipy","numpy"], # 1
excludes = ["scipy.spatial.cKDTree"])
exe = [Executable("filter_adapter_application_1.py")] # 2
# 3
setup(
name= 'Filter',
version = '0.1',
author = "YJS",
description = "FIlter Adapter Application",
options = dict(build_exe = buildOptions),
executables = exe
)
package은 우리가 썻던 라이브러리의 함수를 적습니다.
예를 들어 PyQt5라이브러리를 사용했다면,
buildOptions = dict(packages = ["PyQt5"], excludes = [])
이렇게 넣어줍니다.
혹여 제외해야할 함수가 있다면 excludes를 넣어줍니다.
제가 만들었던 프로그램은 scipy.spatial.cKDTree가 오류가 자꾸 떠서 제외시켜 주었습니다.
제 친구 stackoverflow에서 찾아보니,
scipy.spatial.ckdTree와 scipy.spatialcKDTree가 이름이 겹쳐서 부딪히기 때문에
아예 제외시켜주라던구요...
일단 포함할 라이브러를 package 써준 후에, 만들고 있는 도중에 해당 라이브러리에 오류가 뜬다면
excludes에 오류 부분을 넣어주면 됩니다.
이제 거의 다 왔습니다.
exe = 자신이 exe만들고자 하는 .py
setup부분에서
name = 이름
version = 버젼
author = 만든이
description = 설명
option = buildOption =>라이브러리 추가할건지, 제외할건지
exe = 실행 파일
이제 끝입니다.
setup.py를 만들고 exe파일을 만들 .py랑 위치를 같게 해줍니다.
이제 제가 한 번 만들어 보겠습니다.
일단 오류없이 잘되네요.
pyinstaller는 .dll 때문에 너무 마음 고생을 했는데 ex_freeze는 그 문제를 알아서 해결해줍니다.
build 파일 생겼습니다.
폴더가 생겼네용
exe파일이 있네요. lib 한 번 들어가볼까요?
라이브러리에 온통 다 들어가있네요... 이러니 무겁지..
하지만 안심해서는 안됩니다. 이제 exe파일을 돌려봐야 합니다. 생성됐다고 끝난 것이 아닙니다.
위에 matplot에서 문제가 있지만 돌아가는데에는 문제가 없네요.
다음 시간에는 저희들이 cmd창에서 요즘 누가 사용합니다.
ui를 포함한 것도 exe파일을 만들어 보도록 하겠습니다.
'Python > Application' 카테고리의 다른 글
[파이썬 응용] 4탄 Pyinstaller : exe실행파일 만들기, 오류 해결 (0) | 2020.02.25 |
---|---|
[파이썬 응용] 1. Filter Adapter Application (0) | 2020.02.24 |
[파이썬 응용] 4탄 SpeechRecognition : 6줄로 음성 인공지능 구현하기(STT :Speech to Text) (1) | 2020.02.18 |
[파이썬 응용] 3탄 *arg : 인자를 여러 개 받고 싶을 때 (0) | 2020.02.15 |
[파이썬 응용] 1탄 Scipy : 음성 신호를 LPF , HPF 돌려보기! (3) | 2020.02.11 |