Mac M1芯片通过源码安装Python2.7.x
首先,由于Apple M1芯片使用的是ARM架构,已经不支持Python2.7.x了,所以需要利用Rosetta手动编译Python2.7.x,这里以安装Python2.7.17为例。
1. 下载源码
首先,从 Python 官方网站下载Python 2.7.17的源码并解压缩:
// 直接下载,也可以登陆到网址下载
curl -O https://www.python.org/ftp/python/2.7.17/Python-2.7.17.tgz
// 解压Python-2.7.17.tgz,如果无法解压可以自行去目录下解压,在/User/yourname/下
tar -xzf Python-2.7.17.tgz
// 进入到Python-2.7.17文件夹中
cd Python-2.7.17
2. 安装依赖
前面讲到M1芯片如何安装Homebrew,这里我们需要利用Homebrew安装编译所需要的依赖,如果你不想使用 Homebrew,依赖库需要手动安装,例如从官方下载 OpenSSL、Readline 和 zlib,但是会非常麻烦。
brew install openssl readline zlib
3. 配置环境
由于 M1 芯片是基于 ARM 架构的,而 Python 2.7.17 是为 Intel 架构设计的,你需要使用 Rosetta 2 来模拟 x86_64 架构。在运行 ./configure 和 make 之前,确保使用 Rosetta 2 来执行这些操作。
如果没有安装Rosetta,可以运行以下命令来安装:
/usr/sbin/softwareupdate --install-rosetta --agree-to-license
打开终端,通过 Rosetta 运行。arch -x86_64作用是在 M1 芯片的 Mac 上以 x86_64 架构启动 zsh shell。
arch -x86_64 /bin/zsh
设置编译的环境变量,在bash_profile使用正确的库路径:
vim ~/.bash_profile
# Openssl and Zlib
export CFLAGS="-I$(brew --prefix openssl)/include -I$(brew --prefix zlib)/include"
export LDFLAGS="-L$(brew --prefix openssl)/lib -L$(brew --prefix zlib)/lib"
4. 配置编译选项
运行 ./configure 来配置 Python 安装路径,并链接依赖库。
arch -x86_64 ./configure --prefix=/usr/local/python2.7.17 --with-openssl=$(brew --prefix openssl) --enable-unicode=ucs4
5. 编译
使用 make 进行编译,编译成功后,安装 Python 2.7.17,逐行运行代码:
make
sudo make install
6. 验证安装
编译结束后会默认将python2.7.17放入/usr/local下,其中的/bin/python2.7目录下就是Python2.7.17版本。
/usr/local/python2.7.17/bin/python2.7 --version
2435





