【发布时间】:2021-12-11 06:22:27
【问题描述】:
我在我的 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 -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
这里是相关的,但遗憾的是对我的需求没有帮助,堆栈溢出票:
How to force using 64 bit python on Mac-os-X
Installation issue with Tensorflow Package
How to determine if python is in 32 or 64 bit mode mac
Bad CPU type in executable Mac Rosetta 2 Instructions
任何想法都会有所帮助,谢谢!
【问题讨论】:
-
等等,你的输出对我来说意味着可执行文件正在 64 位运行......
-
好收获!我想我输入了错误的命令... 2**64 而不是 2**32,我会进一步调查,因为在确认之后,问题似乎是由于特定的包或其他不相关的问题。我会关闭它,但谢谢!
标签: python-3.x macos tensorflow