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

Kun*_*mar 10 python macos python-3.x apple-silicon

我有带 Apple M1 芯片的 Macbook,我的项目必须在其中使用 Python 3.6.5。它预装了 Python 2.7.16 和 3.8.2。我曾经brew安装 Python,默认情况下安装 3.9.1。

因此,我尝试使用自制程序公式来安装 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!
Run Code Online (Sandbox Code Playgroud)

我试过pyenv install 3.6.5,但它失败了,并出现与上述类似的错误。方法说明这里通过ePi272314与git的承诺失败,因为它是在自制不再支持安装Python。

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

Error: Cannot install in Homebrew under Rosetta 2 in ARM default prefix (/opt/homebrew)!
Run Code Online (Sandbox Code Playgroud)

最后,我下载了 Python 3.6.5 的 dmg 文件并安装了它。它安装得很好,并且可以作为 python3 安装可见,/usr/local/bin/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 % 
Run Code Online (Sandbox Code Playgroud)

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

最后遇到了这个python 错误报告,它说正在修复 Python 3.8、3.9 和 3.10 的错误。显然,看起来 M1 芯片正式不支持旧版本。

我的问题是:

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

提前致谢。

Eug*_*ene 15

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

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


Cha*_*ffy 5

在 Rosetta 2 下安装Nix就可以解决问题。在运行下面的命令之前我什至没有安装它——请注意当我请求时显示 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.
>>> 
Run Code Online (Sandbox Code Playgroud)

上述内容(出于重现性目的)是nixpkgs参考通道https://nixos.org/channels/nixpkgs-20.09-darwin收集的,特别是实例sn5ycj9wkbdmyinvqyg9rn42sw71wqad-nixpkgs-20.09pre245572.f18fbc33930

  • 对于像我这样的初学者,请按照以下步骤操作:1.使用“/usr/sbin/softwareupdate --install-rosetta”安装rosetta 2.安装nix“sh <(curl -L https://nixos.org/nix/install) - -darwin-use-unencrypted-nix-store-volume" 3.在主目录中创建一个文件 .zprofile 并添加此行“source ~/.nix-profile/etc/profile.d/nix.sh”以便能够使用终端访问 nix。4.获取温度。python 的 shell(例如 3.6)“nix-shell -p python36”。5.用它创建虚拟环境。并随时使用它 6. 使用 pip 在虚拟环境中安装软件包。7.将 python 解释器指向 IDE 的虚拟环境中的解释器或任何需要的地方。 (2认同)