前一篇「在 Linux 用 pyinstaller 打包 python 」成功後,同一個 .spec 設定檔,可以在 Mac 裡重復使用,滿方便的。
另一篇在Mac OS X 裡用 py2app 教學:
py2app – Create standalone Mac OS X applications with Python
https://stackoverflow.max-everyday.com/2017/02/py2app-mac-os-x/
在使用 pyinstaller 之前,很有可能會需要使用到virtualenv。
virtualenv 基礎教學:
http://docs.python-guide.org/en/latest/dev/virtualenvs/
在使用 pyinstaller 之前,可以透過 pip install 來安裝,如果 pip 指令在 macOS 裡顯示無法執行,請服用下面的指令:
sudo easy_install pip
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
教學:
http://pythonguidecn.readthedocs.io/zh/latest/dev/virtualenvs.html
$ 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__
相關文章
在 Python 虛擬環境中使用 Django
https://stackoverflow.max-everyday.com/2023/02/python-venv-django/