這裡記錄了我在升級至 macOS 12.3 之後,由於 Python 2 被移除導致部分 Alfred workflows 無法運作的探索和嘗試。
今天,我手頭上的 MacBook 出現了一些問題,嘗試解決未果,最後按照 Apple 官網的建議,我升級到了最新版本。雖然我並不認為這樣會有所幫助,但還是嘗試了一下。
我一直沒有升級的主要原因是 macOS 12.3 刪除了內置的 Python 2。這意味著我在 Alfred 中一部分依賴 Python 2 的 workflows 可能無法運作(在 workflow 的開發者社群中,有一種看法認為應該使用 macOS 內置的 Python 2 版本,以免用戶需要另行安裝新版 Python 3,關於這個問題的討論可以參考這裡)。加上 Alfred workflow 的開發活躍度似乎在逐漸下降,更新也不頻繁。
升級後,確實有部分 workflows 無法成功運行。我在 Github 上搜尋了一些,但並未發現有任何更新。
需要關閉 SIP 的方法
既然如此,我想我可以下載一個 Python 2 版本,然後將其鏈接到 /usr/bin/python
,這樣應該就可以解決問題了。
我已經安裝了 pyenv
,所以安裝其他版本的 Python 並不困難。
我使用 pyenv install --list
指令查看到可以下載的最新 Python 2 版本是 2.7.18
,於是我安裝了它:pyenv install 2.7.18
。
|
|
然而,當我試圖建立 symbolic link 時,即使使用了 sudo
,我仍然遇到了權限問題。
sudo ln -s "${HOME}/.pyenv/versions/2.7.18/bin/python2.7" /usr/bin/python
結果是:
ln: /usr/bin/python: Operation not permitted
根據我在網上找到的資料,我需要暫時關閉 macOS 的系統完整性保護(System Integrity Protection,簡稱 SIP)才能進行這項操作。
我不希望折騰,所以我決定不繼續這個方法。真的有需要的人可以參考以下的資料:
https://stackoverflow.com/questions/36730549/cannot-create-a-symlink-inside-of-usr-bin-even-as-sudo
Alfred 官方提供的方法
Alfred 官網除了建議你等待更新之外,也提供了一個解決(部分)workflows 無法運行的方法。
https://www.alfredapp.com/help/kb/python-2-monterey/
|
|
Alfred 會自動將 Workflow 的執行語言從 /usr/bin/python
改為 /usr/local/bin/python
。
我相信這樣應該能讓部分 workflow 恢復運行。
如果還是不行,你可以開啟 debug mode,看看是什麼問題。
如果還是不行,那可能就需要修改 workflow 的文件了。你可以將 Run Script
中的 Script
另存為一個 py 文件,然後將執行語言改為 /bin/bash
或者 External Script
,並指定使用安裝好的 Python 2 來執行,這樣應該就可以了。但這樣做想想都覺得麻煩。