如何强制 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 位模式的主要内容,如果未能解决你的问题,请参考以下文章
可以通过参数“-d32”强制 64 位 JVM 使用 32 位模式吗?
当同时安装 32 位和 64 位 JVM 时,如何使用 32 位 JVM 强制运行 Jar 文件?