1. 程式人生 > >在 Mac OS 用 PyInstaller 打包 python

在 Mac OS 用 PyInstaller 打包 python

pyinstaller 打包用指令:

pyinstaller myscript.py

或是用

pyinstaller myscript.spec --clean

這個 .spec 檔案會在第1次執行 pyinstall myscript.py 之後產生

喜歡產生單一檔案的人,可以使用下面這行來 build

pyinstaller -F myscript.spec --clean

pyinstall default 是  -D,Create a one-folder bundle containing an executable (default).

如果執行 pyinstaller 出現下面的錯誤訊息:

-bash: pyinstaller: command not found

是因為你的 ./venv/ 目錄裡的「設定值」是錯誤的,發生的原因有2:

  • 交叉使用了 sudo 和一般 user 的許可權,一般 user 許可權無法修改透過 sudo 指令下載下來的檔案,造成找不到指定的檔案。
  • 修改了原本 ./venv/ 的 parent folder  的 folder name, 造成找不到實際的檔案。

解法就是先用 sudo rm -rf ./venv/ 把目錄完整且乾淨清掉後,重新再來一次即可。

通過pip安裝virtualenv:

$ pip install virtualenv
$ cd your_project_folder
$ virtualenv venv
$ . venv/bin/activate

滿有趣的,提示字元前多了一個(venv)

要退出,就是下 deactivate 即可。

只有第1次需要下 virtualenv venv 之後要進去,就是. venv/bin/activate 就進去了。

滿神奇的,可以不需要下 sudo 就可以透過 pip 安裝所有的程式。virtualenv 裡是乾淨的,所以所有第3方的 package 需要重新 pip install 一次。

打包完成後,執行看看,發現所有的 module name 都消失了,變成 __init__