我在我的MacBook Air (M1, 2020)上有一个奇怪的错误,其中python3.8正在从自制brew install python@3.8
安装为64位二进制文件,但正在以32位模式运行,从而在尝试下载软件包时导致错误。
这是我尝试过的:
- 重新安装并确认可执行文件在32位运行
$ brew reinstall python@3.8 #installs to /opt/homebrew/opt/python@3.8/bin/python3
$ python3.8 -c 'import sys;print("%x" % sys.maxsize, sys.maxsize > 2**64)'
> 7fffffffffffffff False
- 查看二进制文件 的架构
$ file /opt/homebrew/opt/python@3.8/bin/python3
> /opt/homebrew/opt/python@3.8/bin/python3: Mach-O 64-bit executable arm64
从上面的输出可以看出,尽管在32位模式下运行,可执行文件实际上是64位的。
- 额外安装Rosetta 2, mac更新应该可以解决这个问题
$ /usr/sbin/softwareupdate --install-rosetta --agree-to-license
- 尝试在64位arch中强制二进制
$ arch -x86_64 /opt/homebrew/opt/python@3.8/bin/python3
> arch: posix_spawnp: /opt/homebrew/opt/python@3.8/bin/python3: Bad CPU type in executable
这里是相关的,但遗憾的是对我的需求没有帮助,堆栈溢出票:
如何在mac -os- x上强制使用64位python
Tensorflow Package的安装问题
如何确定python是在32位还是64位模式mac
可执行mac Rosetta 2指令中CPU类型错误
任何想法都会有帮助,谢谢!
原来我的命令出错了:
python3.8 -c 'import sys;print("%x" % sys.maxsize, sys.maxsize > 2**64)'
应:
python3.8 -c 'import sys;print("%x" % sys.maxsize, sys.maxsize > 2**32)'
当你在64位模式下运行python时返回true。
这个特定的问题可能是别的问题,因此我结束这个问题。