在 M1 Mac 上本地安装 Python3.7 和 Numpy。

3

我需要安装Python3.7来支持在M1 Mac上使用Spark 2。

我可以使用pyenv安装Python3.7,但是当我尝试安装任何数据科学库(如numpy)时,我遇到了错误:ModuleNotFoundError: No module named '_ctypes'

这似乎与libffi有关。查看pyenv的构建日志时,我看到了以下错误:

.../Python-3.7.10/Modules/_ctypes/libffi_osx/include/fficonfig.h:51:2: error: "Unknown CPU type"
#error "Unknown CPU type"
 ^
1 error generated.

Python build finished successfully!
Failed to build these modules:
_ctypes               _decimal

是否有人成功地使用原生方式安装了3.7并带有numpy?我不需要涉及Rosetta的答案。


2
确保 pyenv 构建实际上包括 ctypes。我想它正在错误地自动检测事物... - AKX
似乎无法构建ctypes。将发布日志。 - kellanburket
1
根据那个错误,我认为Python 3.7不支持M1处理器,除非手动进行补丁操作以让它能理解正在使用的处理器。 - AKX
2个回答

0

使用miniconda安装软件包:请参见this post

Miniconda是conda软件包/环境管理器的开源版本,作为pyenv + brew的替代方案。

它将默认安装ARM本机版本的Python,以及模块的本机版本。这绝对包括ARM本机numpy。

我已经成功地安装了本机python 3.7-3.10和本机numpy,没有任何问题。(事实上,我使用的几乎每个软件包都是ARM本机版本)。

使用conda安装软件包,而不是pip。

因此,在您所在的环境中,要安装numpy,请执行conda install numpy


虽然对conda不是很熟悉,但我能够通过Miniforge找到安装程序。然而,似乎并没有python3.7可用的版本:“PackagesNotFoundError:当前渠道中无法获得以下软件包:- python=3.7”。 - kellanburket
你试过这个命令吗?conda create -n test_env python=3.7。这应该会创建一个新的环境(名为“test_env”),并将Python 3.7作为其使用的Python版本。这对我有效,并且我检查了conda-forge存储库(miniforge conda获取软件包的地方)中可用的Python版本为3.5及更高版本。 - Richard
“Channels” 是 Conda 中指代仓库的术语。默认情况下,Miniforge Conda 应该在 Conda-Forge 仓库中查找。在提示符处,输入“conda search python”。这将显示它正在使用“Conda-Forge”通道,并列出您可以安装的所有可用 Python 版本。 - Richard
5
非常奇怪。我在 conda-forge 频道上搜索时,没有看到任何 3.8 之前的内容。使用 conda create 命令也遇到了同样的问题,找不到 3.7 的版本。 - kellanburket
2
我已经花了很多时间尝试安装3.7版本,但我相当确定这是不可能的。 - James Parker
显示剩余2条评论

0

我曾经遇到过同样的问题,解决方法是首先创建一个conda环境,并使用新的Python版本,然后在激活的环境中更改Python版本:

conda install -c conda-forge python=3.7.8


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