news 2026/2/2 9:26:43

M1 Mac使用Miniconda安装Python3.8与TensorFlow2.5/PyTorch1.8

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
M1 Mac使用Miniconda安装Python3.8与TensorFlow2.5/PyTorch1.8

M1 Mac 搭建原生 ARM64 AI 开发环境:Miniconda + Python 3.8 + TensorFlow 2.5 + PyTorch 1.8

在苹果推出搭载 M1 芯片的 Mac 后,开发者迎来了前所未有的能效比和本地算力。然而,由于架构从 x86_64 迁移到 ARM64,许多依赖底层编译的科学计算与深度学习工具链面临兼容性挑战。尤其是像 TensorFlow 和 PyTorch 这类对硬件加速高度敏感的框架,若未正确配置,极易陷入 Rosetta 2 转译运行的“性能陷阱”——看似能跑,实则慢如蜗牛。

更糟的是,很多教程仍沿用 Intel Mac 的安装思路,在 M1 上直接pip install tensorflow,结果不仅无法启用 GPU 加速,还可能混入非原生二进制包,导致运行时崩溃或性能打折。本文将带你从零开始,构建一个真正运行在原生 ARM64 架构下的 AI 开发环境,确保每一步都贴合 Apple Silicon 的设计逻辑。


安装 Xcode 命令行工具:别跳过的底层基石

哪怕你从不打开 Xcode IDE,这一步也绝不能省略。它是 macOS 上几乎所有编译型工具的基础依赖,包括 Git、Clang 编译器、Make 构建系统等。深度学习库中不少组件(如 Cython 扩展)需要现场编译,缺少这些工具会直接导致安装失败。

打开终端执行:

xcode-select --install

系统会弹出图形化窗口,点击“Install”即可。完成后可通过以下命令验证是否成功:

clang --version

预期输出应包含 Apple clang 版本信息,而非“command not found”。

💡 小知识:即使你使用 Conda 管理大部分依赖,某些 Python 包仍需调用系统编译器进行本地构建。这是 macOS 生态不可绕过的一环。


下载适用于 M1 芯片的 Miniconda:选错版本,全盘皆输

Miniconda 是 Anaconda 的轻量版,仅包含核心的conda包管理器和 Python 解释器,启动快、占用小,非常适合搭建专用开发环境。但关键在于——必须下载专为 Apple Silicon (ARM64) 构建的版本

前往官网获取正确安装包:
👉 https://docs.conda.io/en/latest/miniconda.html#macos-installers

请务必选择这一项:

Miniconda3 macOS Apple M1 ARM64

文件名通常为Miniconda3-macOS-Apple-M1-ARM64.sh

⚠️ 血泪教训:如果你误选了标有 “Intel x86” 的版本,Conda 将强制通过 Rosetta 2 转译运行。这意味着你的环境本质上仍是 x86_64 架构,后续安装的所有包都会受此影响,最终导致 TensorFlow 报错、PyTorch 无法识别 MPS 设备等问题。性能损失可达 30% 以上,得不偿失。


安装 Miniconda:让 conda 成为你项目的“管家”

进入下载目录并执行安装脚本:

cd ~/Downloads bash Miniconda3-macOS-Apple-M1-ARM64.sh

安装过程中会逐页显示许可协议,按回车翻页,最后提示:

Do you wish the installer to initialize Miniconda3 by running conda init? [yes|no]

输入yes。这会让安装程序自动在 shell 配置文件中注入初始化代码,使得每次打开终端都能直接使用conda命令。

安装完成后关闭当前终端,重新打开一个新的终端窗口,输入:

conda --version

如果返回类似conda 23.11.0的版本号,说明安装成功。


为 zsh 正确配置 Conda:避免“命令找不到”的尴尬

macOS 自 Catalina 起默认使用zsh作为登录 shell,而部分旧版 Miniconda 安装脚本可能只修改了.bash_profile,导致新终端无法识别conda命令。

检查并迁移初始化代码

先查看.bash_profile是否含有 Conda 初始化段落:

cat ~/.bash_profile

找到如下区块(由conda init自动生成):

# >>> conda initialize >>> # !! Contents within this block are managed by 'conda init' !! __conda_setup="$('/opt/miniconda3/bin/conda' 'shell.zsh' 'hook' 2> /dev/null)" if [ $? -eq 0 ]; then eval "$__conda_setup" else if [ -f "/opt/miniconda3/etc/profile.d/conda.sh" ]; then . "/opt/miniconda3/etc/profile.d/conda.sh" else export PATH="/opt/miniconda3/bin:$PATH" fi fi unset __conda_setup # <<< conda initialize <<<

将其完整复制到~/.zshrc文件末尾:

vim ~/.zshrc

粘贴后保存退出。

🔍 注意路径一致性:默认安装路径可能是/opt/miniconda3~/miniconda3,请根据实际情况调整。可通过conda info --base查看实际安装根目录。

激活配置并验证

使更改立即生效:

source ~/.zshrc

再次运行:

conda --version

确保命令可被识别。此后任意新开终端均可正常使用 conda。


添加国内镜像源:告别“龟速下载”

Conda 默认从国外服务器拉取包,网络不稳定时常超时或中断。推荐添加中科大镜像源提升稳定性与速度:

conda config --add channels conda-forge conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/main/ conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/free/ conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/conda-forge/ conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/msys2/ conda config --set show_channel_urls yes

这样配置后,conda install会优先从国内源查找匹配包,大幅减少等待时间。

查看当前通道列表确认生效:

conda config --show channels

创建独立虚拟环境:隔离依赖,杜绝冲突

强烈建议不要在 base 环境中安装深度学习框架。不同项目往往依赖特定版本的库,混在一起容易引发“版本地狱”。使用 conda 创建专属环境是最稳妥的做法。

创建名为py3.8_tf2.5_torch1.8的环境,指定 Python 3.8:

conda create -n py3.8_tf2.5_torch1.8 python=3.8 conda activate py3.8_tf2.5_torch1.8

命名清晰有助于后期维护。你可以随时通过conda deactivate退出,再用conda activate <env_name>切换回来。


安装 TensorFlow 2.5:走对路,才能用上 Metal GPU

M1 芯片没有 NVIDIA CUDA,但 Apple 提供了基于 Metal 的高性能计算后端——Metal Performance Shaders (MPS)。要让 TensorFlow 利用这块“隐藏GPU”,必须使用官方特别发布的tensorflow-macos,而不是传统的tensorflow

先装底层优化库

Apple 团队为 M1 专门编译了一套数学库,显著提升了矩阵运算效率:

conda install -c apple tensorflow-deps==2.5.0

这个包包含了优化过的 BLAS、LAPACK 实现,是发挥 M1 CPU 性能的关键。

安装主框架

接下来安装 Apple 版本的 TensorFlow:

python -m pip install tensorflow-macos==2.5.0

注意两点:
- 此包仅支持 macOS 12.0 及以上系统;
- 自动安装 NumPy 1.19.5,若后续升级需注意兼容性问题。

启用 Metal 插件

单独安装 Metal 插件以激活 GPU 支持:

python -m pip install tensorflow-metal

无需额外配置,只要安装成功,TensorFlow 便会自动检测并使用 MPS backend。

验证安装效果

运行以下测试脚本:

import tensorflow as tf print("TensorFlow Version:", tf.__version__) print("GPU Available: ", len(tf.config.list_physical_devices('GPU')) > 0) # 简单模型训练测试 mnist = tf.keras.datasets.mnist (x_train, y_train), (x_test, y_test) = mnist.load_data() x_train, x_test = x_train / 255.0, x_test / 255.0 model = tf.keras.models.Sequential([ tf.keras.layers.Flatten(input_shape=(28, 28)), tf.keras.layers.Dense(128, activation='relu'), tf.keras.layers.Dropout(0.2), tf.keras.layers.Dense(10, activation='softmax') ]) model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy']) model.fit(x_train[:1000], y_train[:1000], epochs=1, verbose=1) loss, acc = model.evaluate(x_test[:100], y_test[:100], verbose=0) print(f"Test Accuracy: {acc:.4f}")

✅ 成功标志:
- 输出"GPU Available: True"
- 训练日志中出现"Executing op _EagerConst in device /job:localhost/replica:0/task:0/device:MPS:0"


安装 PyTorch 1.8:首个原生支持 M1 的正式版本

PyTorch 从 1.8 开始正式提供 Apple Silicon 原生支持,且已内置 MPS backend,无需额外插件。

在同一环境中执行:

conda install pytorch==1.8.0 torchvision==0.9.0 torchaudio==0.8.0 -c pytorch

该命令从官方频道安装,确保所有组件均为 ARM64 构建。

验证是否可用 MPS:

import torch print("PyTorch Version:", torch.__version__) print("MPS Available:", torch.backends.mps.is_available()) print("MPS Built:", torch.backends.mps.is_built())

✅ 正常输出应为:

PyTorch Version: 1.8.0 MPS Available: True MPS Built: True

进一步测试 GPU 运算能力:

if torch.backends.mps.is_available(): x = torch.rand(1000, 1000).to('mps') y = torch.rand(1000, 1000).to('mps') z = torch.mm(x, y) print("MPS tensor multiplication succeeded.")

如果无报错并输出成功信息,则表明 MPS 已正常工作。


验证是否运行在原生 ARM64 架构下

即便前面步骤都正确,仍有可能因某个包未适配而导致整个进程降级到 Rosetta 2。以下是几种可靠的验证方式。

方法一:检查机器架构

import platform print(platform.machine()) # 应输出 'arm64'

若返回x86_64,说明当前 Python 进程正通过 Rosetta 2 运行,需排查安装来源。

方法二:查看可执行文件类型

file $(which python)

正确输出示例:

/Users/xxx/miniconda3/envs/py3.8_tf2.5_torch1.8/bin/python: Mach-O 64-bit executable arm64

若显示x86_64executable x86_64,即表示非原生运行。

方法三:检查动态链接库(高级)

otool -L $(which python) | grep lib

观察是否有来自/usr/lib外部路径的异常依赖,或指向 Rosetta 相关目录的情况。


环境导出与复现:一键还原,团队协作无忧

完成配置后,建议将环境导出为 YAML 文件,便于备份或分享给他人:

conda env export > environment.yml

他人只需一条命令即可重建相同环境:

conda env create -f environment.yml

这极大提升了项目的可复现性,尤其适合学术研究或多成员协作场景。


写在最后:为什么这套方案值得坚持?

在这套配置背后,体现的是对 Apple Silicon 架构特性的尊重与利用:

  • 轻量化:Miniconda 避免冗余组件,专注核心功能;
  • 隔离性:每个项目独立环境,避免依赖污染;
  • 原生性:全流程 ARM64 构建,拒绝 Rosetta 2 转译;
  • 高性能:充分利用 MPS 实现 GPU 加速,训练速度提升显著;
  • 可持续:配置可导出、可迁移,长期维护成本低。

尽管初期设置稍显繁琐,但一旦搭建完成,你会感受到 M1 Mac 在本地 AI 开发中的惊人潜力——风扇几乎静音,电池续航持久,而模型训练却悄然推进。

这才是真正的“高效开发”。

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/1 0:05:57

LobeChat能否推荐餐厅?美食探索AI向导

LobeChat能否推荐餐厅&#xff1f;美食探索AI向导 在城市街头转角犹豫不决时&#xff0c;你是否也曾对着手机屏幕反复刷新——“附近有什么好吃的&#xff1f;”、“人均200以内有没有评分高的意大利菜&#xff1f;”传统搜索方式割裂而低效&#xff1a;地图App查位置、点评平台…

作者头像 李华
网站建设 2026/2/2 2:27:05

LangFlow与Origin数据分析软件联动应用探索

LangFlow与Origin数据分析软件联动应用探索 在科研和工程实践中&#xff0c;我们常常面临一个矛盾&#xff1a;一方面&#xff0c;大语言模型&#xff08;LLM&#xff09;具备强大的语义理解与信息提取能力&#xff1b;另一方面&#xff0c;专业级数据可视化仍依赖如 Origin 这…

作者头像 李华
网站建设 2026/2/2 3:00:00

libxml2 XML解析库:鸿蒙PC上的XML处理工具

ohos-libxml2 是为 OpenHarmony 平台编译的 libxml2 XML 解析库。本文档详细介绍如何在鸿蒙PC上安装和使用官方适配完成的 libxml2 库&#xff0c;包括 HNP 包的打包、安装和使用方法。 &#x1f4cb; 目录 一、项目概述二、为什么需要 HNP 包三、HNP 包打包方法四、安装与使用…

作者头像 李华
网站建设 2026/2/2 2:57:32

螺蛳粉鸭脚煲市场深度研究报告:聚焦那巷那螺发展态势与行业趋势

1.1 研究背景与目的螺蛳粉鸭脚煲融合螺蛳粉酸辣鲜爽与鸭脚软糯口感&#xff0c;发源于广西柳州街头&#xff0c;借社交媒体传播从地方小吃走向全国&#xff0c;成为餐饮行业新兴热门品类。本研究旨在剖析该品类市场现状、消费需求及竞争格局&#xff0c;为企业决策提供支持&…

作者头像 李华
网站建设 2026/2/2 3:10:54

Langchain-Chatchat集成MindIE与Xinference实战

Langchain-Chatchat集成MindIE与Xinference实战 在企业级智能问答系统日益普及的今天&#xff0c;如何在保障数据隐私的前提下实现高性能推理&#xff0c;成为技术选型的核心挑战。尤其对于政企客户而言&#xff0c;私有化部署不仅是合规要求&#xff0c;更是业务连续性的关键支…

作者头像 李华
网站建设 2026/2/2 0:04:26

年前可见刊!版面费破天荒$399,只要格式OK基本无返修直录

知网/谷歌期刊作用01学术和职业发展发表知网普刊论文可以帮助学生提高学术能力和研究水平&#xff0c;增加保研和求职的竞争力。02加分和评奖知网普刊论文可以用于加学分、评奖学金、评优评奖等。这对于在校学生来说是一个非常实际的优势&#xff0c;因为这些期刊相对容易发表&…

作者头像 李华