我有苹果M1芯片的Macbook,在我的项目中我必须使用Python 3.6.5.它预装了Python 2.7.16和3.8.2.我使用brew安装Python,默认情况下安装了3.9.1.

因此,我try 了this个brew 公式来安装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!

我try 了pyenv install 3.6.5,但失败了,错误与上面类似.用git commit安装python的方法here x ePi272314失败,因为brew 软件不再支持它.

当我try 使用上述方法运行Terminal with 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 % 

Idle installed by Python dmg file cannot run either (I have admin rights).

最后,我看到了this个python bug报告,报告中说python 3.8、3.9和3.10的bug正在修复中.显然,M1芯片似乎不支持旧版本.

我的问题是:

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

提前谢谢.

推荐答案

安装在罗塞塔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.
>>> 

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

Python-3.x相关问答推荐

使用pybind11时,在sys.exit(0)处成功完成测试后,Python单元测试冻结

如何使用魔杖扭曲图像

以某种方式分割字符串

合并两个数据帧并对某些总和进行求和

找到在指定列的另一个分组中存在重复的行.

我应该如何调整我的变量,以便如果有任何单词符合其中的条件,程序会将其附加到新列表中?

Python3:是否可以将变量用作函数调用的一部分

通过匹配第一列的行值,逐个单元格地添加两个Pandas 数据框中的浮点数

在 python pandas 中设置条件和分配新值

Pandas 按值和索引对 DF 进行排序

获取以特定字母开头的姓氏

类型提示和链式赋值以及多重赋值

将字节数组转换为类似字节的对象?

为什么不切换到 Python 3.x?

Python 错误:IndexError:字符串索引超出范围

全局捕获快速 api 中的异常

计数大于Pandas groupby 中的值的项目

pdfminer python 3.5

将列表列表转换为Python中的字典字典

Beautifulsoup 的单元测试失败