最近工作筆電更換到新的 M1 macbook pro,但 arm 架構的 M1 CPU 在裝 python 環境上遇到不少坑,在這分享安裝步驟給大家,少走點彎路快樂享受 M1 效能爽感!
目錄
- 1 Rosetta 2 安裝指令
- 2 Homebrew 有分 arm 和 x86 的版本
- 3 修改 .zshrc 區分 arm 和 x86 的套件
- 3.1 PATH 優先尋找 arm Homebrew 安裝的套件
- 3.2 為 x86 的 Homebrew 設定 alias
- 4 安裝 arm + x86 python 開發環境
- 4.1 安裝 pyenv + pyenv-virtualenv
- 4.2 用 pyenv 安裝 python
- 4.3 安裝 python library 時遇到的錯誤
- 5 其他做法
Rosetta 2 安裝指令
Rosetta 沒有列在 App Store 裡,官方文件表示只有在啟動 x86 應用時才會跳對話框提示安裝。但我們可以用以下指令直接強迫安裝:
$ /usr/sbin/softwareupdate --install-rosetta --agree-to-licenseHomebrew 有分 arm 和 x86 的版本
arm 版的 Homebrew 用以下指令安裝,bin 路徑在 /opt/homebrew/bin/brew
$ /bin/bash -c "$(curl -fsSL //raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"x86 版的 Homebrew 用以下指令安裝,bin 路徑在 /usr/local/bin/brew。其中 arch -x86_64 表示後面的指令需要跑在 Rosetta 中。
$ arch -x86_64 /bin/bash -c "$(curl -fsSL //raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"x86 和 arm 的 Homebrew bin 路徑不同,推測應該是為了讓 M1 可以共存兩種版本,官方才做路徑修改。因此我們可以用 which command 確認未來透過 Homebrew 安裝的套件是哪一種版本。
/opt/homebrew/Cellar 下 => arm
/usr/local/Cellar 下 => x86
修改 .zshrc 區分 arm 和 x86 的套件
PATH 優先尋找 arm Homebrew 安裝的套件
在 .zshrc 中調整 PATH 環境變數,讓系統優先尋找 arm 版套件
export PATH="/opt/homebrew/bin:$PATH"為 x86 的 Homebrew 設定 alias
在 .zshrc 中增加 x86 Homebrew alias,免打落落長的指令並增加區別
alias xbrew='arch -x86_64 /usr/local/bin/brew'安裝 arm + x86 python 開發環境
安裝 pyenv + pyenv-virtualenv
立刻來安裝 arm 版 pyenv 和 pyenv-virtualenv 吧
$ brew install pyenv pyenv-virtualenv安裝 build python 所需套件
$ brew install gcc bzip2 libffi libxml2 libxmlsec1 openssl readline sqlite xz zlib如果需要安裝 x86 版,將上述指令的 brew 更換成 x86 alias 的 xbrew 即可。為了區別 x86 的 pyenv,亦可在 .zshrc 中增加 alias
alias xpyenv='arch -x86_64 /usr/local/bin/pyenv'用 pyenv 安裝 python
安裝 python 就和以往相同,如
$ pyenv install 3.8.13詳細可參考 macOS 中 Python 版本太多如何管理?試試 pyenv 吧!
建議直接安裝 3.8.10 以上的 python 節省試錯時間,最初嘗試在 x86 環境安裝 3.6 問題一堆,耗費很多時間用各種手法還是無法成功,最後只好放棄。
安裝 python library 時遇到的錯誤
symbol not found in flat namespace ‘_ffi_prep_closure’
如果用 pip 安裝套件遇到這個錯誤,此篇討論建議重裝 libffi,步驟如下:
- 把 pyenv-virtualenv 產生的虛擬環境,和透過 pyenv 安裝的 python 移除掉 (兩個都要清乾淨,不能鐵齒)
- 跑以下指令重新安裝 libffi
- pyenv 重新安裝 python 並產生 virtualenv
- 再次安裝套件即可解決
2 to 3 invalid
由此篇討論得知問題是 pip 和 setuptools 版本問題導致,使用以下指令強迫安裝指定版本即可解決
$ pip install -U pip==22.0.4 $ pip install -U setuptools==56.0.0其他做法
這邊文章提供的思路是另外建立一個由 Rosetta 啟動的 x86 shell,後續指令預設跑在 x86 下,不用加 arch -x86_64,提供給大家參考。
延伸閱讀:macOS 中 Python 版本太多如何管理?試試 pyenv 吧!
Written by J
雖然大學唸的是生物,但持著興趣與熱情自學,畢業後轉戰硬體工程師,與宅宅工程師們一起過著沒日沒夜的生活,做著台灣最薄的 intel 筆電,要與 macbook air 比拼。離開後,憑著一股傻勁與朋友創業,再度轉戰軟體工程師,一手扛起前後端、雙平台 app 開發,過程中雖跌跌撞撞,卻也累計不少經驗。可惜不是那 1% 的成功人士,於是加入其他成功人士的新創公司,專職開發後端。沒想到卻在採前人坑的過程中,拓寬了眼界,得到了深層的領悟。
首页
- 首页
- 沸点
- 课程
- 直播
- 活动 商城 APP 插件
- 写文章
- 发沸点
- 写笔记
- 写代码
- 草稿箱
会员
白小纯的云笔记
2021年09月05日 07:32 · 阅读 3816
Python从3.9.1版本开始就可以原生态且不通过Rosetta2转译在M1芯片的Mac上运行python3了 1.先查看电脑自身携带的Python版本,打开终端,查看版本应该是Python 3.8.4 2.登陆python官网://www.python.org/ 3.下载最新版Python即可,这里最新版本为Python 3.9.7 4.等待下载完毕后,双击安装包,按照提示步骤安装即可,系统默认的python3版本即会被替换为最新的版本,退出终端,重新进入,查看即可前言
正文
分类:
开发工具
标签:
Python
安装掘金浏览器插件
多内容聚合浏览、多引擎快捷搜索、多工具便捷提效、多模式随心畅享,你想要的,这里都有!
前往安装
收藏成功!
已添加到「」, 点击更改