ETC๐Ÿงท

[ํŒŒ์ด์ฌ] ํŒŒ์ด์ฌ(python) ์œˆ๋„์šฐ ์‹คํ–‰ ํŒŒ์ผ(exe) ๋งŒ๋“ค๊ธฐ - 5๋ถ„์ปท

hae02y 2021. 4. 5. 14:16
๋ฐ˜์‘ํ˜•

Python ์‹คํ–‰ ํŒŒ์ผ(exe) ๋งŒ๋“ค๊ธฐ

๋งค๋ฒˆ .py๋กœ ์‹คํ–‰ํ•˜๊ธฐ ๋ฒˆ๊ฑฐ๋กœ์›Œ์„œ .exe ์‹คํ–‰ํŒŒ์ผ๋กœ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. exe ํŒŒ์ผ์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์€ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋งŽ์ง€๋งŒ, ์—ฌ๋Ÿฌ ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜์ธ pyinstaller ๋ชจ๋“ˆ์„ ์ด์šฉํ•œ exe ํŒŒ์ผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์„ ํฌ์ŠคํŒ… ํ–ˆ์Šต๋‹ˆ๋‹ค.

 

์‹คํ–‰ํ™˜๊ฒฝ

์šด์˜์ฒด์ œ : window 10

ํŒŒ์ด์ฌ ๋ฒ„์ „ : python 3.7

 

pyinstaller ์„ค์น˜

pip๋ฅผ ์ด์šฉํ•˜๋ฉด ๊ฐ„๋‹จํ•˜๊ฒŒ ์„ค์น˜ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์ปค๋งจ๋“œ ๋ช…๋ น์–ด

>> pip install pyinstaller
C:\Users\75385\Desktop>pip install pyinstaller
Collecting pyinstaller
  Downloading https://files.pythonhosted.org/packages/03/32/0e0de593f129bf1d1e77eed562496d154ef4460fd5cecfd78612ef39a0cc/PyInstaller-3.4.tar.gz (3.5MB)
    100% |โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 3.5MB 3.3MB/s
  Installing build dependencies ... done
Requirement already satisfied: setuptools in c:\users\75385\appdata\local\programs\python\python37-32\lib\site-packages (from pyinstaller) (40.6.2)
Collecting pefile>=2017.8.1 (from pyinstaller)
  Downloading https://files.pythonhosted.org/packages/ed/cc/157f20038a80b6a9988abc06c11a4959be8305a0d33b6d21a134127092d4/pefile-2018.8.8.tar.gz (62kB)
    100% |โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 71kB 5.2MB/s
Collecting macholib>=1.8 (from pyinstaller)
  Downloading https://files.pythonhosted.org/packages/41/f1/6d23e1c79d68e41eb592338d90a33af813f98f2b04458aaf0b86908da2d8/macholib-1.11-py2.py3-none-any.whl
Collecting altgraph (from pyinstaller)
  Downloading https://files.pythonhosted.org/packages/0a/cc/646187eac4b797069e2e6b736f14cdef85dbe405c9bfc7803ef36e4f62ef/altgraph-0.16.1-py2.py3-none-any.whl
Collecting pywin32-ctypes (from pyinstaller)
  Downloading https://files.pythonhosted.org/packages/9e/4b/3ab2720f1fa4b4bc924ef1932b842edf10007e4547ea8157b0b9fc78599a/pywin32_ctypes-0.2.0-py2.py3-none-any.whl
Collecting future (from pefile>=2017.8.1->pyinstaller)
  Downloading https://files.pythonhosted.org/packages/90/52/e20466b85000a181e1e144fd8305caf2cf475e2f9674e797b222f8105f5f/future-0.17.1.tar.gz (829kB)
    100% |โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 829kB 5.0MB/s
Installing collected packages: future, pefile, altgraph, macholib, pywin32-ctypes, pyinstaller
  Running setup.py install for future ... done
  Running setup.py install for pefile ... done
  Running setup.py install for pyinstaller ... done
Successfully installed altgraph-0.16.1 future-0.17.1 macholib-1.11 pefile-2018.8.8 pyinstaller-3.4 pywin32-ctypes-0.2.0

 

์„ค์น˜๊ฐ€ ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

 

exe ํŒŒ์ผ ๋งŒ๋“ค๊ธฐ

ํ…Œ์ŠคํŠธ์šฉ test.py ๋งŒ๋“ค๊ธฐ

import datetime

if __name__ == "__main__" :
    print("Start.")

    cur_time = datetime.datetime.now()
    print("Current time : %s" % cur_time)
    
    print("End.")

 

ํ˜„์žฌ ์‹œ๊ฐ„์„ ์ถœ๋ ฅํ•ด์ฃผ๋Š” ๊ฐ„๋‹จํ•œ ํ”„๋กœ๊ทธ๋žจ์ž…๋‹ˆ๋‹ค.

 

test.py๊ฐ€ ์žˆ๋Š” ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์ด๋™ํ•˜์—ฌ, pyinstaller ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•ด์ค๋‹ˆ๋‹ค.

>> pyinstaller --onefile test.py

์ฐธ๊ณ ๋กœ --onefile ์ด๋ผ๋Š” ์˜ต์…˜์„ ๋„ฃ์–ด์ฃผ๋ฉด, ํ•˜๋‚˜์˜ ์‹คํ–‰ํŒŒ์ผ๋กœ ์ƒ์„ฑ์ด ๋ฉ๋‹ˆ๋‹ค. (์ฐธ๊ณ ๋กœ, --noconsole ์˜ต์…˜์„ ๋„ฃ์–ด์ฃผ๋ฉด ์ฝ˜์†”์ฐฝ์ด ๋œจ์ง€ ์•Š๊ณ  ์‹คํ–‰์ด ๋ฉ๋‹ˆ๋‹ค.)

 

์‹คํ–‰ ๊ฒฐ๊ณผ

๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋ฉด, ์ด์™€๊ฐ™์ด dist, build ๋“ฑ ์—ฌ๋Ÿฌ๊ฐœ์˜ ํŒŒ์ผ์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

dist ํด๋”๋กœ ๋“ค์–ด๊ฐ€๋ณด๋ฉด, ์•„๋ž˜์™€ ๊ฐ™์ด ์‹คํ–‰ํŒŒ์ผ(test.exe)์ด ์ƒ์„ฑ๋œ๊ฒƒ์„ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๋”๋ธ” ํด๋ฆญํ•˜์—ฌ ์‹คํ–‰ํ•  ์ˆ˜ ๋„ ์žˆ๊ณ , cmd๋กœ ํ™•์ธํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

๋ฐ˜์‘ํ˜•