开始使用M1 Pro后就陆续碰到几个坑,然后知道为了兼容有时候需要再x86_x64兼容模式来切换一些过度的软件,所以今天在使用pyinstaller打包时发现报错了,一查m1从21年开始就有各种错误,然后发现原来mac下安装python其实会有各种坑,只不过大神还没放到pyenv上吧。
- 首先请尝试一下几个临近的版本,比如3.9.11不行那么就试下3.9.10,众多版本的适配就是可能运气好就没问题,因为它涉及到了多个组件和mac系统适配的问题,解决之前换一个版本是一个省事的办法。这里不得不说,3.9才开始支持apple sillicon所以没升级的就别去折腾低版本了。
- pyinstaller依赖的python需要
env PYTHON_CONFIGURE_OPTS="--enable-shared" pyenv install 3.9.10
,如果不是这么安装的,重新安装即可。 - 重新安装常用的几个组件:
brew reinstall zlib bzip2 readline openssl sqlite3 xz gcc gettext
,这里要说明的是多种尝试后我的问题在安装了gettext组件后解决。如果还未解决的,请尝试看一下环境变量是否已经设置CFLAGS="-I$(brew --prefix openssl)/include -I$(brew --prefix bzip2)/include -I$(brew --prefix readline)/include -I$(xcrun --show-sdk-path)/usr/include" LDFLAGS="-L$(brew --prefix openssl)/lib -L$(brew --prefix readline)/lib -L$(brew --prefix zlib)/lib -L$(brew --prefix bzip2)/lib"
- 关于几个误区,因为m1的适配没多久,目前充斥着很多使用x86的方案,python目前arm源生的没有问题可以先试一下,转译可能会出其他的问题,xcode需要更新到最新版这应该是基本操作了。本来我的环境没有问题,更新到12.3后才发现pyenv安装的python如此不靠谱还真的应了它的全称“simple python env”,brew安装的python非常靠谱!