如何强制 Python 进入 64 位模式

Posted

技术标签:

【中文标题】如何强制 Python 进入 64 位模式【英文标题】:How to force Python into 64bit mode 【发布时间】: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,我会进一步调查,因为在确认之后,问题似乎是由于特定的包或其他不相关的问题。我会关闭它,但谢谢! 【参考方案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。

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

【讨论】:

以上是关于如何强制 Python 进入 64 位模式的主要内容,如果未能解决你的问题,请参考以下文章

如何强制 MSBuild 编译为 32 位模式?

可以通过参数“-d32”强制 64 位 JVM 使用 32 位模式吗?

win11执行保护64位执行文件

当同时安装 32 位和 64 位 JVM 时,如何使用 32 位 JVM 强制运行 Jar 文件?

Win7 64位系统,IE11,如何让IE的Tab强制运行64位内核?

如何确定我的 python shell 是以 32 位还是 64 位执行的?