์๋ ํ์ธ์! ์ค๋์ ์กฐ๊ธ ๋ฌด๊ฒ๊ฒ ์์ํ๊ฒ ์ต๋๋ค.
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ํ์ผ์ ๋ง๋ค์ด ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.