如何在M1 Mac上本地运行Python 3.9.1?

31

目前似乎使用Anaconda和Xcode 12都不可能做到。通过idle,可以通过Rosetta运行。似乎没有讨论这个问题,所以我可能很天真,或者这也可能对其他人有用。

Python说:“自3.9.1以来,Python现在完全支持在macOS 11.0(Big Sur)上构建和运行,并且在基于ARM64架构的Apple Silicon Mac上也可以运行。 新的通用构建变体universal2现在可用于本地支持ARM64和Intel 64在一组可执行文件中”https://docs.python.org/3/whatsnew/3.9.html

请帮助新手弄清如何利用他最近的冲动购买。

6个回答

26

现在您可以通过多种方式安装Python 3.9.1,但目前(2021年2月)在M1 ARM架构上获得完整的Python数据科学套件最全面的构建环境是通过miniforge。

例如:

brew install --cask miniforge
conda init zsh
conda activate
conda install numpy scipy scikit-learn

3
感谢您的回复。问题是关于本地运行,而非通过Rosetta翻译运行。在ARM M1芯片上运行Python 3.9.1时,Python进程在“活动监视器”中标记为'Intel Architecture'。这似乎是一个编译器问题。我如何编译以在ARM芯片上本地运行?这发生在Anaconda和Xcode 12中。 - hithisispeter
2
我不确定你是如何设置的。homebrew installer 可以在 M1 芯片上正确安装 miniforge 的 ARM 版本。 - climatebrad
1
好的,它能够工作。但问题在于您不允许在商业环境中使用Anaconda。 :( 我希望很快就能够通过常规的Python安装来实现,这样我就可以在公司使用我的Mac Pro了。 - ali
2
“在商业环境中不允许使用Anaconda”是什么意思? - yts61
1
我拒绝使用conda。 - Connor
conda-forge是conda的一个分支,提供了miniforge和mambaforge的本地ARM MacOS版本(https://github.com/conda-forge/miniforge),以及一系列不错的软件包。 - bht

17

现在你可以在Mac M1(苹果芯片)上本地安装Python 3.9.4了。我使用pyenv安装了所有本机ARM架构的Python 3.7、3.8和3.9。例如,要安装3.9.4:

$ pyenv install 3.9.4
python-build: use openssl@1.1 from homebrew
python-build: use readline from homebrew
Downloading Python-3.9.4.tar.xz...
-> https://www.python.org/ftp/python/3.9.4/Python-3.9.4.tar.xz
Installing Python-3.9.4...
python-build: use readline from homebrew
python-build: use zlib from xcode sdk
Installed Python-3.9.4 to /Users/squademy/.pyenv/versions/3.9.4

如果您想了解如何安装pyenv和多个Python版本的完整指南,您可以阅读这篇文章:https://squademy.medium.com/install-python-on-macos-11-m1-apple-silicon-using-pyenv-12e0729427a9


1
Homebrew在arm64上有多稳定?顺便说一句,pyenv很赞。 - william_grisaitis
3
你的文章有没有在其他更容易访问的地方发表?那个链接因为需要 Medium 的登录而被阻止了。 - ohhorob
编辑队列已满,但我刚刚测试了原始的pyenv文档,在Mac M2上运行良好。你们的Medium页面有很好的指南,只是原始文档始终是最新的,而且从不设置付费墙 :) - undefined

14

我正在使用Python 3.9.4版本,并且只通过Homebrew进行了安装。

brew install python@3.9

还可以执行以下操作来取消关联并检查版本号

brew unlink python3
brew link python3.9
python3 --version

3

我升级到了3.9.4版本。

  1. 下载Python通用安装程序 - https://www.python.org/downloads/mac-osx/

注意:我还是无法通过sudo pip install mysqlclient来安装mysqlclient。
我需要进行以下操作:

  1. 更新homebrew - 参见https://brew.sh
  2. 在 .bash_profile 中添加 /opt/homebrew/bin 到 PATH(不要忘记执行source .bash_profile) 或者 在使用zsh的情况下,在 .zprofile 中添加 /opt/homebrew/bin 到 PATH(不要忘记执行source .zprofile)

3
这是否默认您的shell是bash而不是zsh?随着macOS转向zsh,我认为我们现在需要更新.zprofile而不是.bash_profile - william_grisaitis
2
你说得对!我之前在bash上使用的是旧脚本,所以必须更新bash_profile。我已经更新了答案,包括.zprofile。 - C Wilke

1

无需使用brew(除了在一天结束时享受愉悦的饮料)-

只需从Python Releases for macOS下载所需的universal2版本即可。
(这些版本适用于Intel和Mn(例如M1、M2)Mac。)

下载的文件是一个.pkg文件,按预期双击安装即可。

该过程将在Applications下的特定版本文件夹中放置一些信息文件和特定版本的IDLEPython Launcher应用程序。它还将在系统frameworks文件夹中安装适当的python可执行文件,例如/Library/Frameworks/Python.framework/Versions/3.10/Python

现在,

  • 你可以使用虚拟环境来运行程序,比如在PyCharm中自带的或者参考python.org的虚拟环境和模块的教程。需要注意使用正确的框架版本。

  • 你可以在Applications文件夹内使用特定版本的IDLE应用程序。

  • 你可以通过将脚本文件拖放到Python Launcher应用程序的Dock图标上,或将.py扩展名与Launcher应用程序关联来运行脚本(这将允许您在Finder中双击脚本以使用Launcher应用程序运行它)。

请注意,如果您将启动器应用程序与文件关联,并且在您的Mac上安装了多个python版本,则可能需要自定义python版本的扩展名以供使用(例如,使用.py3.10而不仅仅是.py)。这样,您就可以将特定版本的启动器应用程序与脚本所需的特定版本的python相关联。

0
为了避免干扰系统的Python,我建议按照pyenv文档中的指南进行操作。
我刚在我的M2 Macbook上测试过,一切正常。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接