在具有 M1 芯片(基于 ARM 的 Apple Silicon)的 Mac 上安装较早版本的 Python(3.8 之前)失败

     2023-02-23     155

关键词:

【中文标题】在具有 M1 芯片(基于 ARM 的 Apple Silicon)的 Mac 上安装较早版本的 Python(3.8 之前)失败【英文标题】:Installation of earlier versions of Python (prior to 3.8) fails on Mac with M1 Chip (ARM based Apple Silicon) 【发布时间】:2021-04-15 14:31:14 【问题描述】:

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

所以,我尝试this自制公式安装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 的方法失败,因为自制软件不再支持它。

当我尝试使用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 芯片官方似乎不支持旧版本。

我的问题是:

    还有其他方法可以在 Mac M1 上使用 Python 3.6.5 吗?我错过了什么吗? 如果没有,请提及。我会接受这个答案。

提前致谢。

【问题讨论】:

我建议现在在 Rosetta 终端下运行 python。许多库/等需要来自Homebrew major blockers list 的上游。 FWIW 我设法在 Rosetta 2 下通过 Homebrew 安装了 3.7.9(及更高版本)。 我没有检查 3.7.9,但 3.6.5 也没有在 Rosetta 2 下运行。我得到了相同的 zsh:killed ,如上所示。如果它在 Rosetta 2 上运行的终端中运行,那么 IDLE 将首先正常运行。我这样说是因为 3.6.5 dmg 适用于 x86 CPU,因此默认情况下 IDLE 将在 Rosetta 2 上运行。但它也无法如图所示启动。 (旁白:我建议完全不要使用 Homebrew;安全模型真的很糟糕——使/usr/local/bin 用户可写意味着恶意软件不需要进行任何类型的权限提升即可将未签名的二进制文件放入您的 PATH;使用 Nix 的原因还有很多,但它支持“守护程序模式”,其中一个单独的 nixbld 用户执行所有构建任务,并且所有安装的 /nix/store 位置对所有人都是只读的非特权用户,我真的很感激)。 【参考方案1】:

虽然是EOL,但您可以使用 pyenv 在 Mac M1 上安装最终版本 3.6.15。

【讨论】:

【参考方案2】:

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

【讨论】:

【参考方案3】:

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

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

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

在thispython 错误跟踪器中。

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

【讨论】:

OP 并没有要求它是 M1 原生的。当然,获得原生构建需要补丁,但如果他们对 Rosetta 感到满意,则不需要补丁。【参考方案4】:

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

【讨论】:

...也就是说,nixpkgs 20.09 对 Python 3.6 的支持有所下降,因为 NixOS 目前默认使用 3.8——它们不会为 lxml 或 scipy 等流行包缓存二进制文件不再;如果我需要在项目中使用 Python 3.6,我可能会考虑为其固定一个较旧的 nixpkgs 版本,至少从安全角度来看是可行的。 对于像我这样的初学者,请遵循以下步骤: 1. 使用 "/usr/sbin/softwareupdate --install-rosetta" 安装rosetta 2. 安装 nix "sh nixos.org/nix/install) - -darwin-use-unencrypted-nix-store-volume" 3.在主目录中创建一个文件 .zprofile 并添加这一行 "source ~/.nix-profile/etc/profile.d/nix.sh" 以便能够使用终端访问 nix。 4.获取温度。 python的外壳(例如3.6)“nix-shell -p python36”。 5.用它来创建虚拟环境。并随时使用 6. 使用 pip 在虚拟环境中安装软件包。 7.将python解释器指向IDE的虚拟环境或任何需要的地方。 @KundanKumar, ...可以告诉 Nix 为您安装 Python 包,因此您不需要使用 pip,但这是一个很好的起点。 :) @VarunJoshi,当仍然支持 Python 3.5 时,我可能会从后面切换到较旧的 nixpkgs——去年的 20.09 可能已经足够好了。旧频道仍然存在,即使他们没有获得更新。请参阅nix-channel 以控制用于检索包定义的通道集。 @RobertMinasyan,对,但是当 Python 3.6 可用时,您始终可以从后面启用旧频道。二进制文件永远不会消失。

Apple M1 - macosx-arm64 尚不可用的 Maven Java 依赖项

...:我正在尝试让一个Java/Maven项目在AppleM1上运行,该项目具有M1芯片尚不可用的依赖项。就我而言,这是nd4j,但它可能是任何其他依赖项。<d 查看详情

苹果m1带起arm,英特尔x86霸主地位遭威胁

...还记得去年11月11日,苹果宣布发布首款基于ARM的自研芯片M1时在业界引起的轰动,其出色的性能和功耗一度令人展望M1能否开启一个新时代。一年之后,苹果在M1的基础上又推出了M1Pro和M1Max,再结合这一年ARM和x86... 查看详情

Xcode 12 Apple M1 arm64 - 可设计错误:“错误的架构”

...ecture"【发布时间】:2020-12-1407:57:22【问题描述】:在基于AppleSilicon的机器上使用Interfacebuilder时,我当前的项目会引发IBDesignable错误。我尝试排除arm64架构进行调试,以及 查看详情

在 M1 芯片上运行 rails 时出错(Apple Silicon)

】在M1芯片上运行rails时出错(AppleSilicon)【英文标题】:ErrorrunningrailssonM1chip(AppleSilicon)【发布时间】:2021-05-1123:39:06【问题描述】:我正在尝试学习Rails,但在尝试运行服务器时遇到了问题。我阅读了reddit、Youtube教程、Stackover... 查看详情

如何在 Apple Silicon (ARM / M1) 上安装 SciPy

】如何在AppleSilicon(ARM/M1)上安装SciPy【英文标题】:HowtoinstallSciPyonAppleSilicon(ARM/M1)【发布时间】:2021-04-2101:09:51【问题描述】:我已经成功地在带有AppleSilicon的新Macmini上安装了带有Numpy和Matplotlib的python3.9.1。但是,我无法安装SciPy... 查看详情

带有 M1 芯片的 Macmini 的 Xcode 抛出 arm64 架构错误

】带有M1芯片的Macmini的Xcode抛出arm64架构错误【英文标题】:Xcodethrowingarm64architectureerrorforMacminiwithM1chip【发布时间】:2021-05-2108:36:51【问题描述】:我在使用带有M1芯片的AppleNewMacmini的XCode中遇到了一些问题。在我的应用程序中,... 查看详情

如何在 Apple M1 芯片上导入 Pandas

】如何在AppleM1芯片上导入Pandas【英文标题】:HowdoIimportPandasonAppleM1chip【发布时间】:2021-04-1008:44:00【问题描述】:当我打电话时:importpandasaspd在tensorflow_macos(用于M1芯片)我明白了:ImportErrorTraceback(mostrecentcalllast)~/tensorflow_maco... 查看详情

ARM64架构(M1芯片):无法安装pg gem(使用PostgresApp)

】ARM64架构(M1芯片):无法安装pggem(使用PostgresApp)【英文标题】:ARM64architecture(M1chip):Cannotinstallpggem(usingPostgresApp)【发布时间】:2021-04-2420:35:50【问题描述】:我一直在尝试在运行BigSur的计算机(带有M1的MacbookPro2020)上安装... 查看详情

虚拟环境 Apple M1 芯片上的错误架构问题

】虚拟环境AppleM1芯片上的错误架构问题【英文标题】:WrongarchitectureissueonvirtualenvironmentAppleM1Chip【发布时间】:2021-08-1114:27:46【问题描述】:我一直试图在我的新macbookAppleM1芯片机器上运行我的django项目,但只遇到以下错误。我... 查看详情

适用于 Apple M1 芯片的 Java/JDK

】适用于AppleM1芯片的Java/JDK【英文标题】:Java/JDKfortheAppleM1chip【发布时间】:2021-02-2312:27:13【问题描述】:是否需要特别发布OpenJDK来支持新的AppleM1芯片?我看到目前有适用于macOS/OSX的JDK下载,但这些似乎只适用于x86处理器。那... 查看详情

macos(m1芯片arm架构)下如何安装tensorflow(代码片段)

...果官方称还支持添加metal插件,从而可以调用集成在M1芯片中的GPU部分,但是目前只支持tensorflow2.5和2.6的版本,而本节使用使用的版本是tensorflow2.4python3.8,因此并未安装加速插件。官方安装metal方法如下:Tensor... 查看详情

如何在 Apple Silicon M1 上原生安装 NodeJS?

...AppleSiliconMacBookPro上安装NodeJS,但我无法找到将它安装在基于ARM的AppleM1上的方法。标准安装将在Intel仿真模式下运行,但我看到他们已经有一个ARMLinux版 查看详情

React Native Project 没有在使用 Apple M1 芯片的 iOS 模拟器上运行

】ReactNativeProject没有在使用AppleM1芯片的iOS模拟器上运行【英文标题】:ReactNativeProjectisnotrunningoniOSSimulatorusingAppleM1chip【发布时间】:2021-07-2413:33:28【问题描述】:我对ReactNative并不陌生,已经研究了一段时间,但我现在面临的问... 查看详情

arm要一统天下?华为已掘了它的后路

...经到来,然而此时华为却发布了RISC-V架构的高清电视芯片Hi373V110,似乎显示出华为正转向RISC-V阵营,这对于ARM来说可谓当头棒喝。如今的ARM可谓春风得意,它在移动芯片市场已居于绝对的垄断地位,全球的移... 查看详情

Flutter:如何在 Apple M1 芯片中安装 Flutter 及其所需的 SDK 元素?

】Flutter:如何在AppleM1芯片中安装Flutter及其所需的SDK元素?【英文标题】:Flutter:HowtoinstallFlutteranditsrequiredSDKelementsinAppleM1Chip?【发布时间】:2021-09-1101:17:24【问题描述】:我购买了一台新的AppleMacBookPro,M1芯片笔记本电脑。主要... 查看详情

在arm架构的mac上安装sqlserver(m1芯片orm2芯片)(代码片段)

在arm架构的mac上安装sqlserver由于Mac最新的芯片使用了arm架构的缘故Sqlserver和Mac的兼容相当差,以至于无法在Mac的docker上启动在m1芯片上很多方法试试还是可以的但是m2就几乎行不通了尝试了很多命令,无果,最终还是... 查看详情

如何在 mac M1(Apple 芯片)上使用 google_sign_in api 进行开发

】如何在macM1(Apple芯片)上使用google_sign_inapi进行开发【英文标题】:howtodevelopusinggoogle_sign_inapionmacM1(Applesilicon)【发布时间】:2021-11-0300:27:33【问题描述】:我最近开始在M1mac上使用颤振开发一个项目,我所有的依赖项都可以正... 查看详情

Apple M1 芯片上的随机“断言失败”错误

】AppleM1芯片上的随机“断言失败”错误【英文标题】:Random"Assertionfailed"errorsonAppleM1chip【发布时间】:2021-08-1305:16:26【问题描述】:我刚刚从Windows10切换到运行最新AppleM1Silicon的MacOS。这是我在Mac上的第一个项目,我安装... 查看详情