极客 | 树莓派能做什么?

树莓派能做什么?关于此命题,最直观感受就是看看树莓派实验室整理的一些案例,相信你心目中会有答案的。例如,打造一个家庭媒体中心 ( KODI )、配置无线路由器、搭建 BT 下载服务器、搭建代码托管服务器 ( SVN、GIt )、搭建网站服务器、搭建 Shadowsocks、用 HomeKit + Siri 声控家里电器等,即可把树莓派想象成嵌入式、微小型的服务器,这一过程就好比操作系统 ( Linux ) 赋予硬件生命,编程 ( Python、Java )、程序灌入灵魂,借助树莓派低能耗、移动便携性、GPIO 等特性,很多想法不是不可能,相信树莓派会给你创造更多的惊喜!

需要说明的是,本文将围绕两大方面去探索树莓派,即基础应用和解决方案两大部分,也可理解为基础到进阶的过程。

  • 基础应用:介绍使用树莓派必须的应用或组件,这些应用和组件主要作用是:一方面是增强系统功能,另一方面则是为解决方案建立软件基础。
  • 解决方案:诸如引言中谈及的,搭建服务器、智能家居控制中心等,即针对某部分需求集成为服务,学术说法称其为某某即服务 ( XaaS )。

版本信息

更新进度

  • 2019.01.21:完成初稿,形成笔记的整体框架;
  • 2019.02.25:更新「Jupyter 服务器」 章节内容;
  • 2019.02.26:更新「Conda 服务器」 章节内容;

教学资源

基础应用

TeamViewer 远程控制

引言

访问树莓派有多种方式,如直连显示器交互使用、通过 SSH 远程登录访问、通过软件实现控制使用等。其中,TeamViewer 是通过软件方式实现对树莓派的远程控制,其拥有有以下几种特性:

  • 可穿透局域网,支持外网连接;
  • 实时 GUI 界面显示;
  • 支持文件双向传输。

配置

在本节,则单独介绍 TeamViewer 的配置与使用,当然教程是参考文章 [5][6] 整理而得。

删除 TeamViewer

删除 TeamViewer,用于安装出错时,清理残留软件包,方便从头再来。😂

此步骤是非必要执行的步骤。

1
2
3
4
5
sudo apt-get remove teamviewer-host
# 清除所有已删除包的残余配置文件
# 若报错误 dpkg: –purge needs at least one package name argument
# 证明你的系统中没有残留配置文件了
dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P
安装 TeamViewer

Step.01:进入 官方下载,在「TeamViewer Host for Raspberry Pi」模块,复制安装包地址,接着正式开始安装:

1
2
3
4
5
6
7
8
9
10
11
12
# 通过 wget 在线下载安装包
wget https://download.teamviewer.com/download/linux/teamviewer-host_armhf.deb
# 安装本地软件包,但不解决依赖关系
sudo dpkg -i teamviewer-host_armhf.deb
# 修复损坏的软件包,尝试卸载出错的包,重新安装正确版本的
sudo apt-get -f install

# 若提示未找到依赖包,可安装 Gdebi,通过 Gdebi 安装解决依赖问题
# 使用 Gdebi 可代替软件中心接管 deb 软件包的安装
# 它会根据软件仓库这一实用的特性来解算依赖关系
sudo apt-get install gdebi
sudo gdebi teamviewer-host_armhf.deb
配置 TeamViewer

Step.02:因为我们烧写的系统有图形界面,默认 TeamViewer 要在图形界面进行配置,如远程控制的账号、密码设置等。若有条件支持,可移步图形化界面操作,即可忽略此步骤。

  • 没有图形界面,则我们需要在命令行下配置。使用 raspi-config 配置 Raspbian 仅命令行模式运行。

    1
    2
    3
    4
    5
    6
    sudo raspi-config

    # 命令模式的操作界面
    # 依次选择操作 ( 同理,还原桌面模式也是类似操作 )
    # Boot Options -> Desktop / CLI -> Console AutoLogin ->
    # Finished
  • 配置保存后,树莓派会自动重启,那么重新远程登录继续操作。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    sudo teamviewer setup
    # 1. Accept License Agreement? (y/n) y
    # 2. 输入用户名和密码的步骤无法跳过,没有账号请移步「官网完成注册」
    # 注册地址:https://login.teamviewer.com/LogOn
    # Please enter your e-mail / username: kofe
    # Please enter your password: ******
    # 3. 然后 TeamViewer 会发一份设备授权邮件,请移步「邮箱处理」
    # 4. 重新输入用户名和密码登录,提示分组信息,点击 y:
    # Adding this machine as 'raspberrypi' to ...
    # Do you want to continue? (y/n) [n] y
    # 5. 提示 "Successfully...." 即表示已经完成配置工作了
  • 完成初始化配置后,只需设置远程控制密码即可使用了。

    1
    2
    3
    4
    # 查看本机 ID
    teamviewer info
    # 设置本机密码
    teamviewer passwd [你的密码]
  • 当然,我们还需要把 Raspbian 还原为图形化操作界面。

    1
    2
    3
    sudo raspi-config
    # Boot Options -> Desktop / CLI -> Desktop AutoLogin ->
    # Finished

使用

  • 一般情况下,我们主要是通过命令模式访问树莓派、配置 TeamViewer。当然也可以通过图形界面完成配置操作,按照文字提示操作即可,这里就不详细阐述了。附上 TeamViewer 常用的命令:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    # 查看帮助信息
    teamviewer help
    # 查看本机 ID
    teamviewer info
    # 设置本机密码
    sudo teamviewer passwd [你的密码]
    # 启动 TeamViewer 服务
    sudo teamviewer --daemon start
    # 开启 TeamViewer 服务随机启动
    sudo teamviewer --daemon enable
  • 最后,关于图形化界面显示方面,可能还有分辨率调整与存在黑边的问题,详细可参考以下文章解决问题:

MySQL 数据库

引言

数据库的用途毋庸置疑,若在树莓派上跑脚本、程序、网站系统等,少不了数据的交互,为此我们需要一款数据库作为数据储存的媒介。MySQL,是一款开源免费的数据库,也是关系型数据库管理系统,支持多种存储引擎 $^{[1, 2]}$,对于个人开发和日常使用足矣。

以下将介绍,在树莓派 Raspbian 上安装 Mysql 服务,并开启远程访问。

安装 MySQL

  • 删除 MySQL:安装前,确保系统没有旧版的 MySQL。

    1
    2
    3
    4
    5
    6
    7
    sudo apt-get autoremove --purge mysql-server
    sudo apt-get remove mysql-common

    # 清除所有已删除包的残馀配置文件
    # 若报错误 dpkg: –purge needs at least one package name argument
    # 证明你的系统中没有残留配置文件了
    dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P
  • 安装 MySQL:

    1
    2
    3
    sudo apt-get install mysql-server
    sudo apt-get install mysql-client
    sudo apt-get install python-mysqldb # 安装 Python 接口的 MySQL

配置 MySQL

  • 命令行安装,默认是不用配置用户和密码信息,故我们首先配置登录信息 $^{[3]}$:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    sudo mysql -u root # 无密码登录 MySQL
    use mysql;

    # 加密方式选择,系统默认是 'unix_socket',这里暂为空
    UPDATE user SET plugin='' WHERE user='root';

    UPDATE user SET password=PASSWORD('你自己的密码') WHERE user='root';

    flush privileges; # 清空缓存
    exit;
  • 操作数据库 ( 配置完信息,重启 MySQL 以让设置生效 )

    1
    2
    3
    4
    5
    6
    # sudo /etc/init.d/mysql status/start/stop/restart
    sudo /etc/init.d/mysql restart

    # 当然可通过 systemctl 命令管理系统服务
    # sudo systemctl restart mysql # 重启系统服务
    # sudo systemctl status mysql # 查看系统状态

开启远程访问

以上配置工作完成后,即可本地使用 MySQL 数据库了。若需要开启远程访问服务,我们还需要实现以下工作:防火墙与访问规则配置和远程登录的账号配置。

外网访问

若在树莓派下测试,让数据库允许外网访问,注意得关闭防火墙或添加规则允许某端口的访问权限 $^{[4]}$。

  • Case.01:本机和服务器端 ( 树莓派 ) 互相 Ping 对方 IP,以检验网络是否畅通、是否拒绝访问。
  • Case.02:若网络畅通、没有拒绝访问,还要留意对应端口是否有权限访问,通过 nc -vz IP 端口检验,返回 Succeeded 即成功。

    1
    2
    3
    4
    5
    # MacOS:nc -vz IP地址 端口号
    nc -vz 192.168.x.x 3306
    # Windows:telnet IP地址 端口号
    telnet 192.168.x.x 22 # SSH 远程访问
    telnet 192.168.x.x 3306 # MySQL 数据库
防火墙与访问规则

针对上述两种情况,则可通过关闭防火墙或者添加端口的访问规则,以授权 IP 和相关端口接受访问。

  • 配置防火墙:

    1
    2
    3
    4
    5
    6
    7
    8
    # 安装 ufw ( 已安装忽略 )
    sudo apt-get install ufw
    # 设置默认规则为 allow,除指明打开的端口,所有端口默认关闭
    ufw default deny
    # 启用 /关闭 ufw
    ufw enable/disable
    # 查看防火墙状态
    ufw status
  • 配置访问规则:

    1
    2
    3
    4
    # 例如:打开 SSH 远程登录
    sudo ufw allow 22
    # 删除添加过的规则
    sudo ufw delete allow 22
远程登录的账号

最后,我们还需要设置可远程登录的账号。

  • 修改 MySQL 配置:

    1
    2
    3
    sudo vim /etc/mysql/mariadb.conf.d/50-server.cnf
    # 找到 bind-address 这行注释掉,然后重启
    sudo systemctl restart mysql
  • 修改 MySQL 账号信息:在配置 登录信息 时已授权,此项可日后用作远程登录账号的配置。

    1
    2
    3
    4
    mysql -u root -p
    use mysql;
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root账号密码' WITH GRANT OPTION;
    flush privileges;

Jupyter 服务器

引言

Jupyter Notebooks 是什么?相信做数据科学项目的同学都清楚,Jupyter 其提供了一个集成环境,无需更多附加操作就可在其中编写你的代码、运行代码、查看输出、可视化数据并查看结果。

作为一款可执行端到端的数据科学工作流程的便捷工具,它不仅支持数据清理、统计建模、构建和训练机器学习模型、可视化数据等数据科学工作,而且其强大的交互性,使得它可以更具教学性的方式展示代码。

当然 Jupyter 也能运行其他 Python 程序,这里只是为了代入特定场景介绍它。

安装 Jupyter Notebook

  • 在此之前,需要确保你安装了 Python 以及 pip 模块。

    1
    2
    3
    # 树莓派 Raspbian 原生内置了 Python 2.7
    # 我们需要基于 Python 3.x 基础上运作 Jupyter,则需要先安装 Python 3.x
    sudo apt-get install python3.5 python3-pip
  • 安装 Jupyter Notebook:

    若你已经有使用 virtualenv 的经验,强烈建议在虚拟环境中安装所需版本的 jupyter notebook。

    1
    2
    3
    4
    5
    6
    7
    # 基于 Python 2.7
    pip install --upgrade jupyter
    # 基于 Python 3.x
    pip3 install --upgrade jupyter

    # 检查是否安装成功,成功返回版本号
    jupyter --version

配置 Jupyter Notebook

配置 Jupyter Notebook,参考了文档 [7]

  • 生成配置文件:注意不同用户组,生成的配置文件是存放在不同位置的。

    1
    2
    3
    4
    5
    # 配置文件存放于 /root/.jupyter/jupyter_notebook_config.py 
    sudo jupyter notebook --generate-config
    # 配置文件存放于 /home/pi/.jupyter/jupyter_notebook_config.py ( 推荐 )
    # /home/pi/ 为当前登录用户的工作目录
    jupyter notebook --generate-config
  • 设置密码:终端进入 iPython / Python 环境,借助 Python 生成 SHA 密钥:

    若不开启远程服务,则可跳过此步骤。

    1
    2
    3
    4
    5
    6
    >>> from notebook.auth import passwd # 导入授权模块设置密码
    >>> passwd() # 提示键入密码
    Enter password: your password
    Verify password: your password again
    # 密码的哈希值,用于配置文件中设置密码
    'sha1:67c9e601de......7d111089e11aed'
  • 进入配置文件:

    1
    sudo vim /home/pi/.jupyter/jupyter_notebook_config.py
  • 修改配置内容:配置选项非常丰富,关于其他配置的选项用途详细可参考 jupyter_notebook_config.py 内的注释。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    # 注意开启配置选项,记得去掉 #,才能使配置生效!
    # 允许所有 IP 访问
    c.NotebookApp.ip='*'
    # 远程访问密钥
    c.NotebookApp.password = u'sha:67c9e......11aed'
    # 不在本机自动打开浏览器
    c.NotebookApp.open_browser = False
    # 指定监听端口
    c.NotebookApp.port =8888
    # Jupyter 的默认工作目录
    c.NotebookApp.notebook_dir = '/home/pi/ipynb/'
    # 允许使用 root 用户启动 jupyter
    # c.NotebookApp.allow_root = True
  • 启动 Jupyter Notebook:jupyter notebook

拓展 Jupyter Notebook

开启远程访问

Jupyter Notebook 开启远程访问 ( 远程访问这里指同一局域网,其他终端访问树莓派,若是要外网访问请参阅内网穿透相关内容 ),但端口被拒绝访问。

  • 在配置文件中,我们只设置了 0.0.0.0* 的 IP 地址,在局域网环境运行能正常访问。但对于远程访问,归根结底,我们还需要知道树莓派的 IP 才能访问到服务端的 Jupyter,故我们是这样解决访问问题的 $^{[7]}$。

    1
    2
    3
    4
    # nohup: 一直执行命令,即使关闭了 SSH。
    # --ip: 指定在 192.168.10.200 ( 树莓派的IP ) 上监听活动。
    # &: 在后台运行这条命令。
    nohup jupyter notebook --ip 192.168.10.200 &
  • 最后,我们需要确保该端口是否在安全策略下已经开启,详细可参考 MySQL 数据库的 防火墙与访问规则 章节内容。

开启自启服务

搭建 Jupyter 服务器,Jupyter 挂靠后台服务,且开通断电自动重启功能,参考了文档 [8]

  • /etc/systemd/system 下创建 jupyter.service 输入如下内容:

    1
    sudo vim /etc/sytemd/system/jupyter.service
  • jupyter.service 内容填写如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    [Unit]
    Description=Jupyter Notebook
    After=network.target

    [Service]
    Type=simple
    # 这里在 /run 目录下没有 jupyter.pid
    # 这个是进程产生之后出现的,虽然在启动前没有,但是可以使用
    PIDFile=/run/jupyter.pid
    # ExecStart 是执行文件 jupyter-notebook
    # config 是配置文件 jupyter_notebook_config.py
    # ip 是树莓派的地址
    ExecStart=/usr/local/bin/jupyter-notebook --config=/home/pi/.jupyter/jupyter_notebook_config.py --ip=192.168.10.200
    User=pi
    # 查看用户组 groups pi,发现属于 pi 组
    Group=pi
    # 自己设置的工作目录
    # 需同时在 jupyter_notebook_config.py 中设置
    # c.NotebookApp.notebook_dir = '/home/pi/ipynb/'
    WorkingDirectory=/home/pi/ipynb/
    Restart=always
    RestartSec=10

    [Install]
    WantedBy=multi-user.target
  • 使服务自启动:systemctl enable jupyter

  • 启动服务:service jupyter start
加载虚拟环境
  • 首先,我们为 Jupyter Notebook 创建隔绝的虚拟环境,从而便捷、更针对地管理软件包。

    比如,某个 Python 程序需要 Python 2.7 特定环境运行,而我们编译的环境是 Python 3.x ,即为了运行该程序需要把原来的 Python 3.x 给替换成 Python 2.7。同理,对于程序的依赖包,即使是同一个软件包也存在不同版本的要求。那么问题就出现在这,在同一台电脑上,为让更多程序兼容运行,这正是虚拟环境的作用之一。

  • 再者,引入 Conda 管理器 的概念,简单来说 Conda 是一款包管理系统。conda 与 pip 类似,它会根据你的键入需求,且自行交代清楚相互依赖的包,并实现自动化地下载、安装它们。

  • 基于以上两点的理解,我们正式进入正题,开始配置一个虚拟环境,并让 Jupyter Notebook 使用起来:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    # 1. 参考 Conda 管理器的 BerryConda 小节,完成 BerryConda 的安装
    # 2. 建立一个虚拟环境运作 Conda 以方便管理各种包
    conda create -n your_venv_name python=3.6
    # 3. 激活环境
    source activate your_venv_name
    # 4. 安装 Jupyter 包:上述内容中,Jupyter 是安装在原生环境下的
    # 考虑到兼容性的情况 (例如第5点的情况),在该虚拟环境中重新安装一个 Jupyter
    conda install jupyter
    # 给该环境下载其他软件包也是类似操作
    # conda install scipy numpy scikit-learn...
    # 5. 指定版本安装 tornado,不然 Jupyter 会报错
    conda install tornado=4.5
    # 6. 安装 nb_conda 包,让 Jupyter 支持使用虚拟环境
    conda install nb_conda
  • 若使用虚拟环境中的 Jupyter ( 自启服务的 ExecStart 设置同理 ),此时启动 Jupyter 的程序应该改为:

    1
    2
    # /home/pi/ 为当前登录用户的工作目录
    /home/pi/berryconda3/envs/your_venv_name/bin/jupyter-notebook
打造科学环境
Tensorflow

值得庆贺的是,Tensorflow 1.9 官方版本开始支持树莓派 RaspBerry Pi 了,没有繁琐的步骤即可体验 Tensorflow!具体的安装方法大概参考 Tensorflow 官方说明文档

  • 但在实操过程中还是碰到了不可预计的情况:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    # 1. 安装 libatlas-base-dev (Required for Numpy)
    sudo apt install libatlas-base-dev
    # 2. 同样,在虚拟环境内安装 tensorflow,虚拟环境的 Python 版本为 3.6
    source activate your_venv_name
    # 3. 安装 h5py、hdf5,不然 tf 安装过程中会报错 ( 缺少 hdf5.h 文件 ):
    # /tmp/pip-install-ve4RnJ/h5py/h5py/api_compat.h:27:18:
    # fatal error: hdf5.h: No such file or directory
    # 4. 通过 conda 安装 h5py ( 好像 pip (Python3.x) 安装 h5py 会遇到缺少文件的问题?)
    conda install h5py
    # 5. 正式安装 tensorflow
    # pip --version 查看是否是虚拟环境的 pip,不然未能安装在当前环境
    pip install --upgrade --user tensorflow
  • 若中途不出错、不提示错误,等待安装成功即可。然后输入代码测试验证:

    1
    2
    3
    4
    python # 命令进入 ipython / python 模式
    >>> import tensorflow as tf
    >>> tf.enable_eager_execution()
    >>> print( tf.reduce_sum(tf.random_normal([1000, 1000])) )
  • 当然,还可能遇到 tensorflow 部分模块的 Python 版本跟编译环境的 Python 版本对不上,则可通过针对 ( 编译环境的 ) Python 版本的 pip 升级 tensorflow 解决此问题:

    1
    2
    3
    4
    5
    # 异常的情况大概如下:
    # /usr/lib/python3.6/importlib/_bootstrap.py:219:
    # RuntimeWarning: compiletime version 3.5 of module 'tensorflow.python.framework.fast_tensor_util'
    # does not match runtime version 3.6
    python3.6 -m pip install --upgrade --user tensorflow
Keras
  • 安装过程演示:

    1
    2
    3
    4
    5
    # 1. 同样,在虚拟环境内安装 keras,虚拟环境的 Python 版本为 3.6
    source activate your_venv_name
    # 2. 正式安装 keras
    # pip --version 查看是否是虚拟环境的 pip,不然未能安装在当前环境
    pip install --upgrade --user keras
  • 当然,还可能遇到版本对不上的异常,参考 上述解决方案:

    1
    python3.6 -m pip install --upgrade --user keras
常见问题整理
  • 当新建或修改 ipynb 文档时,出现 Permission denied: Untitled.ipynb 权限异常,检查工作目录是否具有操作权限、当前用户是否有操作权限。

    1
    2
    3
    4
    5
    # 确保 Jupyter 工作目录属于当前登录用户 pi
    sudo chown -R pi:pi /home/pi/ipynb
    # 确保 Jupyter 工作目录有可读、可写和可执行的权限
    # 更新后的权限情况:drwxrwxr--
    chmod ug=rwx /home/pi/ipynb

Conda 管理器

引言

无论是使用 Jupyter Notebook,亦或是原生 Python 环境做 数据科学 相关工作,难免需要 安装各种科学计算包,而且还涉及众多依赖包的安装。那么如何管理包变成了一门 “手艺活” 了,此时推荐你使用 Conda 包管理系统,繁琐的包安装工作交由 Conda 处理,你只管专心地开展数据科学工作。

参考 树莓派 Raspbian 系统可安装 Anaconda 吗?,得知树莓派安装 Conda 共有两种选择:

  • MiniConda:年久未更,目前 Python 只停留在 Python 3.4 版本。
  • BerryConda:是一款为树莓派定制基于 Conda Python 发行版的开源软件。Berryconda 提供了 Python 2.7 的 Berryconda 2 和 Python 3.6 的 Berryconda 3,同时还支持树莓派 0、1、2、3 各个系列,我们可根据树莓派的版本选择适合的软件版本安装即可。

Miniconda

Miniconda 与 Anaconda 同为发行版本的 Conda 包管理系统,Miniconda 则是最小的 Conda 安装环境。以下直接安装操作演示,安装过程参考了 [9][10]

安装 MiniConda
  • 首先,确保安装了 wgetbzip2

    1
    2
    3
    4
    # 查看是否有反馈,有则表示已安装
    wget --help
    bzip2 --help
    sudo apt-get install -y wget bzip2
  • 下载安装脚本:

    1
    2
    3
    # wget 不添加参数,默认是保存到当前路径
    # wget -O /path/name 指定路径及文件名
    wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-armv7l.sh
  • 运行安装脚本:

    安装过程中不需要使用 sudo,程序默认会安装到 /home/pi/miniconda3 中。当然,也是为了确保 miniconda3 工作目录属于当前登录用户 pi。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    bash Miniconda3-latest-Linux-armv7l.sh
    # 安装过程中,需要阅读一份声明,后面需要输入两次 Yes 确认
    # 第一个 Yes 是是否同意声明,若回车跳过则是默认输入了 No
    # 第二个 Yes 是添加到环境变量,否则需要自己手动添加到环境变量
    # --------- 若选择了 No 则需进行以下步骤的操作 --------- #
    # 1. 编辑 /bashrc 文件
    vim /home/pi/.bashrc
    # 2. 添加以下内容 (根据自己的安装路径修改):
    # export PATH="/home/pi/miniconda3/bin:$PATH"
    # 3. 添加完成后记得让其生效 ( 启动时才执行原则 )
    # export 生成的环境变量是临时的,关闭终端即结束 ( 可改永久性环境变量 )
    source /home/pi/.bashrc
使用 MiniConda
  • 检查 conda 是否安装成功,返回版本信息:

    1
    2
    3
    4
    # 检查 conda 是否安装成功,返回版本信息
    conda --version
    # 显示当前已经安装好的包
    conda list
  • 创建虚拟环境,以避免 “污染” 环境,便于管理各种 Python 包:

    1
    2
    3
    4
    5
    6
    # 建立一个虚拟环境运作 Conda 以方便管理各种包
    conda create -n your_venv_name python=3.4
    # 删除一个虚拟环境:
    # conda env remove -n your_venv_name
    # 激活环境 <---> 关闭环境:source deactivate
    source activate your_venv_name
  • 更改国内源,优化安装包下载速度:

    1
    2
    3
    4
    5
    6
    # 添加国内下载源 ( 例如: 清华源 )
    conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
    conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
    conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
    # 替换源后记得更新 Conda 以促使配置生效
    conda update conda
  • 使用 Conda 安装包:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    # 事先查找指定软件是否存在
    conda search numpy
    # 安装指定软件
    conda install numpy
    # 安装特定版本的软件,Conda 会先卸载已安装版本,然后重新安装指定版本
    conda install 软件名=版本号
    # 更新指定软件
    conda update numpy
    # 卸载指定软件
    conda remove numpy
卸载 MiniConda
  • 卸载 MiniConda 的方法:

    1
    2
    3
    4
    5
    6
    # 1. 在 /home/pi/.bashrc 移除环境变量 ( 注释掉 )
    # export PATH="/home/pi/miniconda3/bin:$PATH"
    # 2. 删除 miniconda 整个文件
    rm -rf miniconda3/
    # 3. 重新激活 .bashrc
    source /home/pi/.bashrc

BerryConda

BerryConda 是一款为树莓派定制基于 conda python 发行版的开源软件。安装过程参考了 [11]

安装 BerryConda
  • 参考 BerryConda 文档,根据自己的机器版本 ( 树莓派 3B+ / Armv7l 架构 ),并确定 Python 版本号 ( Python 3.x ),为此选择了 Berryconda 3 版本安装,安装方法与 Miniconda 类似。

  • 下载安装脚本:

    安装过程中不需要使用 sudo,程序默认会安装到 /home/pi/berryconda3 中。当然,也是为了确保 berryconda3 工作目录属于当前登录用户 pi。

    1
    wget https://github.com/jjhelmus/berryconda/releases/download/v2.0.0/Berryconda3-2.0.0-Linux-armv7l.sh
  • 执行安装脚本:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    bash Berryconda3-2.0.0-Linux-armv7l.sh
    # 安装过程中,需要阅读一份声明,后面需要输入两次 Yes 确认
    # 第一个 Yes 是是否同意声明,若回车跳过则是默认输入了 No
    # 第二个 Yes 是添加到环境变量,否则需要自己手动添加到环境变量
    # --------- 若选择了 No 则需进行以下步骤的操作 --------- #
    # 1. 编辑 /bashrc 文件
    vim /home/pi/.bashrc
    # 2. 添加以下内容 (根据自己的安装路径修改):
    # export PATH="/home/pi/miniconda3/bin:$PATH"
    # 3. 添加完成后记得让其生效
    # export 生成的环境变量是临时的,关闭终端即结束 ( 可改永久性环境变量 )
    source /home/pi/.bashrc
使用 BerryConda
  • 至此,BerryConda 已经安装完成,查看版本信息检验是否安装成功,剩余的 Conda 操作参考 使用 MiniConda 章节即可。

    1
    2
    3
    4
    # 检查 conda 是否安装成功,返回版本信息
    conda --version
    # 显示当前已经安装好的包
    conda list

解决方案

参考资料