【问题标题】:How to force Python into 64bit mode如何强制 Python 进入 64 位模式
【发布时间】:2021-12-11 06:22:27
【问题描述】:

我在我的 MacBook Air(M1,2020)上遇到一个奇怪的错误,其中 python3.8 是从自制软件 brew install python@3.8 安装为 64 位二进制文​​件,但在 32 位模式下运行,因此导致错误正在尝试下载包。

这是我尝试过的:

  1. 重新安装并确认可执行文件以 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
  1. 看二进制架构
$ 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 位的。

  1. 额外安装 Rosetta 2,一个 Mac 更新据说可以解决这个问题
$ /usr/sbin/softwareupdate --install-rosetta --agree-to-license
  1. 尝试在 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


【解决方案1】:

原来我的命令有错误:

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。

这个特定问题可能是其他问题,因此我要结束这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-13
    • 1970-01-01
    • 1970-01-01
    • 2021-09-29
    • 2018-07-31
    • 2010-11-04
    相关资源
    最近更新 更多