Overview
- Install Rosetta
- Install Homebrew (x86)
- Install Pyenv + Virtualenv (x86)
1. Install Rosetta
softwareupdate --install-rosetta
裝完之後在 Terminal 或 iTerm 按右鍵 => 取得資訊
可以看到 “使用 Rosetta 打開” 的選項,勾起來就會模擬 x86 環境
筆者是直接複製一個 iTerm,把這個選項打勾,並重新命名為 iTerm_Rosetta
2. Install Homebrew (x86)
在原本安裝 Homebrew 指令前方加上 arch -x86_64
即可安裝 x86 版本的 Homebrew
arch -x86_64 /bin/bash -c '$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)'
裝完之後,可以用 which -a 來查看目前的安裝的 Homebrew 路徑
which -a brew # /usr/local/bin/brew => x86 # /opt/homebrew/bin/brew => arm
接著需要新增 x86 版的 Homebrew alias 到 ~/.zshrc 裡,後續才能區隔使用
常見命名有 xbrew 或 brew86,看喜歡哪一種覺得好記就好
alias xbrew='arch -x86_64 /usr/local/bin/brew'
3. Install Pyenv + Virtualenv + Python (x86)
利用 x86 版的 Homebrew 安裝 pyenv 和 virtualenv
xbrew install pyenv pyenv-virtualenv
接著我們在 .zshrc 下加入以下指令
當使用 Rosetta 開啟 iTerm 時,初始化相對應的 pyenv 和 virtual env
同時將 x86 下的 pyenv 與 library 指向正確的路徑,就不用再新增一個叫 xpyenv 的 alias
# ============================================================================= # Rosetta # ============================================================================= if [ $(arch) = "i386" ]; then eval "$(/usr/local/bin/brew shellenv)" alias xpyenv="arch -x86_64 pyenv" export PYENV_ROOT=~/.pyenv-i386 export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/opt/openssl@1.1/lib/ else eval "$(/opt/homebrew/bin/brew shellenv)" export LIBRARY_PATH=$LIBRARY_PATH:/opt/homebrew/opt/openssl/lib/ fi if command -v pyenv 1>/dev/null 2>&1; then if [ $(arch) = "i386" ]; then export PATH="$HOME/.pyenv-i386/bin:$PATH" eval "$(xpyenv init -)" eval "$(xpyenv virtualenv-init -)" else export PATH="$HOME/.pyenv/bin:$PATH" eval "$(pyenv init -)" eval "$(pyenv virtualenv-init -)" fi fi
改完後記得下 source 指令或開新的 Terminal
再透過 which 檢查一下 python 和 pyenv 的 Location
在 ./pyenv-i386 下就代表目前環境是 x86 了
source ~/.zshrc which python # /Users/UserName/.pyenv-i386/shims/python pyenv which pip # /Users/UserName/.pyenv-i386/versions/3.9.15/bin/pip
設定完這些只要開啟 Rosetta 的 iTerm
就可以跟平常一樣順順地使用了