微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在带有 M1 芯片基于 ARM 的 Apple Silicon的 Mac 上安装早期版本的 Python3.8 之前失败

如何解决在带有 M1 芯片基于 ARM 的 Apple Silicon的 Mac 上安装早期版本的 Python3.8 之前失败

我有配备 Apple M1 芯片的 Macbook,我的项目必须在其中使用 Python 3.6.5。它预装了 Python 2.7.16 和 3.8.2。我使用 brew 安装 Python,认安装 3.9.1。

所以,我尝试了 this homebrew 公式来安装 3.6.5,但出现以下错误

checking for pthread_t... yes
checking size of pthread_t... 8
configure: error: Unexpected output of 'arch' on OSX

Do not report this issue to Homebrew/brew or Homebrew/core!

我尝试了 pyenv install 3.6.5 ,但它失败了,并出现与上述类似的错误ePi272314 解释了 here 使用 git commit 安装 python 的方法失败,因为 homebrew 不再支持它。

当我尝试使用 Rosetta 2 运行终端并安装 python 3.6.5 时,使用上述方法,我得到以下信息或其他一些编译错误

Error: Cannot install in Homebrew under Rosetta 2 in ARM default prefix (/opt/homebrew)!

最后,我下载了 Python 3.6.5 的 dmg 文件并安装了它。它安装得很好,在 /usr/local/bin/python3 处可以看到作为 python3 安装,但无法运行。

kxxxr@Kxxxns-MBP bin % where python3
/opt/homebrew/bin/python3
/Library/Frameworks/Python.framework/Versions/3.6/bin/python3
/opt/homebrew/bin/python3
/usr/local/bin/python3
/usr/bin/python3
kxxxr@Kxxxns-MBP bin % /opt/homebrew/bin/python3 --version
Python 3.9.1
kxxxr@Kxxxns-MBP bin % /usr/local/bin/python3 --version
zsh: killed     /usr/local/bin/python3 --version
kxxxr@Kxxxns-MBP bin % 

由 Python dmg 文件安装的 Idle 也无法运行(我有管理员权限)。

最后遇到 this python 错误报告,其中说错误正在修复 Python 3.8、3.9 和 3.10。显然,M1 芯片似乎将不再支持旧版本。

我的问题是:

  1. 是否有其他方法可以在 Mac M1 上使用 Python 3.6.5?我错过了什么吗?
  2. 如果没有,请提及。我会接受它作为答案。

提前致谢。

解决方法

使用@Charles Duffy 的回答,您可以让旧版本在 M1 上运行。 然而,3.8 之前的 Python 版本将不会在 M1 上得到正式支持,因为它们在 M1 芯片发布时还没有处于错误修复阶段。 here 清楚地说明为:

">是否有计划将 PR 22855 向后移植到 3.9 之前的任何分支?

计划还支持 Big Sur 和 Apple Silicon 上的 3.8,因为 3.8 仍处于错误修复模式。没有计划将支持向后移植到 3.7 和 3.6,它们处于发布周期的仅安全修复阶段。”

this python 错误跟踪器中。

所以我不认为有任何方法可以让他们在 M1 上工作,除非有人自己调整 python。

,

Nix 安装在 Rosetta 2 下即可。在运行以下命令之前,我什至没有安装它 -- 请注意显示 Nix 在我请求时正在下载 Python 3.6 的消息。

# yes,this really is a M1 Mac
charles@macbook-pro ~ % uname -a
Darwin macbook-pro.lan 20.2.0 Darwin Kernel Version 20.2.0: Wed Dec  2 20:40:21 PST 2020; root:xnu-7195.60.75~1/RELEASE_ARM64_T8101 x86_64 i386 MacBookPro17,1 Darwin
charles@macbook-pro ~ % arch
arm64

# ...however,Rosetta was used to install an x86_64 Nix build
charles@macbook-pro ~ % file "$(realpath "$(command -v nix)")"
/nix/store/104sp9zrhmh3jycj32jcyl3f13mysdki-nix-2.3.9/bin/nix: Mach-O 64-bit executable x86_64

# ...and that x86_64 Nix build can install and run an x86_64 Python 3.6
charles@macbook-pro ~ % nix run nixpkgs.python36 -c python
[1 copied (53.7 MiB),9.3 MiB DL]
Python 3.6.12 (default,Dec 18 2020,15:32:50) 
[GCC 4.2.1 Compatible Clang 7.1.0 (tags/RELEASE_710/final)] on darwin
Type "help","copyright","credits" or "license" for more information.
>>> 

以上(出于可重复性目的)收集时使用 nixpkgs 指代通道 https://nixos.org/channels/nixpkgs-20.09-darwin,特别是实例 sn5ycj9wkbdmyinvqyg9rn42sw71wqad-nixpkgs-20.09pre245572.f18fbc33930

,

M1 不支持 Python 3.6 可能是因为 3.6 将在今年年底(2021 年)到达行尾 (EOL)。

我建议您在 M1 上至少尝试 Python 3.7 或更高版本。使用 pyenv,我成功地在 macOS 11 (Apple Silicon) 上本地安装了 Python 3.7.103.8.63.9.4。如果您仍在寻找答案,本文将帮助您完成整个过程:https://squademy.medium.com/install-python-on-macos-11-m1-apple-silicon-using-pyenv-12e0729427a9

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。