【Python】Macbook M1 安装tensorflow以及miniforge3和anaconda3的转换

一个整理性的文档,有问题大家可以留言补充。

目录

第一部分 miniforge3下载安装以及环境变量配置

(一)下载

(二)安装

(三)环境配置

第二部分 anaconda3和miniforge3的转换

第三部分 安装tensorflow

(一)创建虚拟环境

(二)下载tensorflow

(三)测试代码


前情提要:目前anaconda还没有支持arm芯片架构的,而m1是arm芯片架构的,最明显的问题就在于anaconda3在macos m1下不支持tensorflow,为了解决这个问题,需要安装一个arm架构的anaconda,即miniforge。

第一部分 miniforge3下载安装以及环境变量配置

(一)下载

miniforge3下载:macOS ARM builds on conda-forge — the conda-forge blog

【Python】Macbook M1 安装tensorflow以及miniforge3和anaconda3的转换_第1张图片

点击“here”下载,得到“Miniforge3-MacOSX-arm64.sh”,放到自己打算安装的地方,例如:/Users/Myname/software。本文之后的路径都需要根据自己文件存放的位置进行更改。

(二)安装

进入(一)中存放的目录,运行以下命令:

bash Miniforge3-MacOSX-arm64.sh

安装完毕后,目录下会生成一个文件夹:miniforge3。

(三)环境配置

未安装过anaconda,有以下两种方法,第一种是比较多博主写到的,但是我这么写无法进入base,所以我用的是第二种,大家可以自己尝试一下(执行完如果没反应可以重启一个终端看看):

1、在命令行加入执行以下命令:

echo 'export PATH="/Users/Myname/software/miniforge3/bin:$PATH"' >> ~/.zshrc
echo 'export PATH="/Users/Myname/software/miniforge3/bin:$PATH"' >> ~/.bash_profile
source ~/.bash_profile
source ~/.zshrc

2、在~/.zshrc和~/.bash_profile都加入以下代码

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

之后更新环境变量:

source ~/.zshrc
source ~/.bash_profile

已经安装过anaconda,只需要看第二部分讲的转换就行了。

*.zshrc和.bash_profile的区别:

zhsrc在电脑的根目录 /下,具体位置为 /etc/zhsrc;

.bash_profile在用户目录下; /user/用户名/.bash_profile。

zhsrc是开机加载的环境变量,.bash_profile针对当前登录用户的配置,自己配置东西可以在这个里面。

在终端执行source ~/.bash_profile,只对当前端口生效,重新开窗口就无效。

第二部分 anaconda3和miniforge3的转换

查看环境,确认自己当前的环境:

conda env list

miniforge3->anaconda3:

/Users/Myname/software/anaconda3/bin/conda init zsh 
/Users/Myname/software/anaconda3/bin/conda init bash

anaconda3->miniforge3:

/Users/Myname/software/miniforge3/bin/conda init zsh
/Users/Myname/software/miniforge3/bin/conda init bash

一定要明确执行的conda init所在路径。刚执行完会显示no change,重新打开一个终端就可以了。

第三部分 安装tensorflow

(一)创建虚拟环境

先切换到miniforge的base,创建一个虚拟环境(名称和python版本按照自己需求定义,但是python的版本要3.8及以上)并进入,我这里创建了一个python3.8的虚拟环境:

conda create -n tf24 python=3.8
conda activate tf24

(二)下载tensorflow

下载地址:https://github.com/apple/tensorflow_macos/releases

下载下图中圈起的文件,它里面包含了前四个文件,也包含了numpy、grpcio、h5py的安装文件。

【Python】Macbook M1 安装tensorflow以及miniforge3和anaconda3的转换_第2张图片

 解压后会有2个文件夹arm64和x86_64,需要cd进入arm64文件夹,以下是arm64文件夹里的内容:

【Python】Macbook M1 安装tensorflow以及miniforge3和anaconda3的转换_第3张图片

先安装除Tensorflow包以外的whl:

pip install --upgrade --no-dependencies --force numpy-1.18.5-cp38-cp38-macosx_11_0_arm64.whl grpcio-1.33.2-cp38-cp38-macosx_11_0_arm64.whl h5py-2.10.0-cp38-cp38-macosx_11_0_arm64.whl

因为安装TensorFlow有很多依赖的其他包,先安装这些依赖包:

pip install absl-py astunparse flatbuffers gast google_pasta keras_preprocessing opt_einsum protobuf tensorflow_estimator termcolor typing_extensions wrapt wheel tensorboard typeguard

继续安装来自arm64文件夹的tensorflow的whl文件:

pip install --upgrade --force --no-dependencies tensorflow_macos-0.1a3-cp38-cp38-macosx_11_0_arm64.whl
pip install --upgrade --force --no-dependencies tensorflow_addons_macos-0.1a3-cp38-cp38-macosx_11_0_arm64.whl

到此tensorflow就安装完了。

(三)测试代码

查看tensorflow版本:

【Python】Macbook M1 安装tensorflow以及miniforge3和anaconda3的转换_第4张图片

运行测试模型:

import tensorflow as tf
import time

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.summary()
model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])


start = time.time()

model.fit(x_train, y_train, epochs=5)

end = time.time()

model.evaluate(x_test, y_test)
print(end - start)

正常结果:

【Python】Macbook M1 安装tensorflow以及miniforge3和anaconda3的转换_第5张图片

 参考:

https://www.icode9.com/content-4-1244256.html

Mac m1芯片anaconda上安装tensorflow_是CC姐呀的博客-CSDN博客_m1芯片安装tensorflow

Mac M1安装tensorflow_allan2222的博客-CSDN博客_m1mac安装tensorflow

anaconda与miniforge3的base切换_lc_dreams的博客-CSDN博客_miniforge和anaconda的区别

你可能感兴趣的:(环境搭建,Python,环境搭建,python,virtualenv,tensorflow)