首先,由于Apple M1芯片使用的是ARM架构,已经不支持Python2.7.x了,所以需要利用Rosetta手动编译Python2.7.x,这里以安装Python2.7.17为例。
首先,从 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
前面讲到M1芯片如何安装Homebrew,这里我们需要利用Homebrew安装编译所需要的依赖,如果你不想使用 Homebrew,依赖库需要手动安装,例如从官方下载 OpenSSL、Readline 和 zlib,但是会非常麻烦。
brew install openssl readline zlib
由于 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"
运行 ./configure
来配置 Python 安装路径,并链接依赖库。
arch -x86_64 ./configure --prefix=/usr/local/python2.7.17 --with-openssl=$(brew --prefix openssl) --enable-unicode=ucs4
使用 make
进行编译,编译成功后,安装 Python 2.7.17,逐行运行代码:
make
sudo make install
编译结束后会默认将python2.7.17放入/usr/local
下,其中的/bin/python2.7
目录下就是Python2.7.17版本。
/usr/local/python2.7.17/bin/python2.7 --version