從零開始學Python (29) — 打包安裝PyInstaller:誰把誰的靈魂,裝進誰的身體

Day 29 打包安裝PyInstaller:誰把誰的靈魂,裝進誰的身體

Chih-Yu Lin

--

註:本篇文章同步刊載於iT邦幫忙,為鐵人賽之系列文章。
https://ithelp.ithome.com.tw/articles/10247305

因為按照慣例,第三十天主要會講比較偏向結論性質的東西,
包含接下來可能的學習方向以及建議,
所以讓我們今天用PyInstaller來做技術方面的最後一章,
恭喜各位讀者,這系列如果都有扎實的跟上的話,
應該能對Python有一些基本的認識。

PyInstaller是一個用來打包安裝Python檔案的函式庫,
一般狀況下,使用pip可以輕鬆將其安裝:

pip install pyinstaller

為什麼我們會需要PyInstaller呢?
一般狀況下有幾個可能:

  1. 你不想直接讓別人看到程式碼(註:但會破解的還是做得到XD)
  2. 你在開發過程中用了一些函式庫,
    這些函式庫並非內建的,從而別人要用你的.py檔執行的話,
    會需要進行其它的pip install或準備工作。
    這樣很麻煩很不方便,
    你希望拿到的人最好可以滑鼠點兩下就可以執行才對XD

這時候使用PyInstaller就可以達成這樣的目的,
除了可以給定簡單的加密外(防君子的那種),
它還可以將整個程式連同用到的函式庫一起打包成執行檔!

我們這邊使用前面的tkinter的範例,
讀者應該會用到的檔案就是fromzero.py和unicorn.ico,
還沒做過的同學,請參照Day 22的範例及Day 23的修改部分。

為了測試,
我們再手動加上一個其實我們沒有在這個範例使用的numpy,
請在fromzero.py中額外加入這行:
(因為它是額外pip安裝的,藉此我們可以觀察一下差異)

import numpy as np

PyInstaller的使用方式是直接在命令提示字元下指令,
使用pyinstaller -h可以查看help提示:

pyinstaller -h

--

--

Chih-Yu Lin

LeetCode、Python、Java、Android;第11屆iT邦幫忙鐵人賽Software Development組優選(從LeetCode學演算法);HiSKIO特約講師;課程優惠: https://bit.ly/lc2022all ;合作請洽: learnwithdesolve@gmail.com