关键词:Android、Termux、Debian Linux、Python、Jupyter、Octave、Octave_kernel

写在前面(请忽略

这段时间在跟着吴恩达的机器学习入门教程学习,除了每章节后面的编程作业之外,自己也想写一写实验性质的代码来验证自己的想法,同时想要建立一套简单的初级工具包,以便需要时快速使用。

我的需求,就是使用便携的设备(能画图能打游戏的笔记本工作站不算,平时也不会常开),在本地编写 Octave 程序并能执行看到结果,包括控制台输出以及 plot 图像,另外能用 git 等工具上传代码或者 Onedrive 等同步文件。

除了我手上的神船大本之外,还有个 Samsung Tab S6 小平板。我对这个小平板还是很满意的,自带的手写笔手感很好,平时看 pdf、做笔记都很舒服。另外还搞了套键盘,是那种类似于 Surface 的吸附键盘,大量文本打字也很方便。

这样算下来,最适合我的方案就是在平板上安装一套 Jupyter 和 Octave 的环境,再用浏览器来访问并执行。最开始是想直接在 Termux 内安装 Jupyter 和 Octave,但是因为未知原因,kernel 无法找到 octave_cli 文件。之后尝试了在 Ubuntu 内安装 Anaconda 来使用 Jupyter,但 conda 命令始终无法执行,python 版本也是乱七八糟。第三次尝试换成 Debian 安装 Python 直接安装 Jupyter 的方式,很顺利的就能用了,因此将安装方式记录一下,以便大家参考。

目录

  1. Termux
  2. Linux
  3. Python & Pip & Jupyter
  4. Octave & Octave_kernel
  5. Others

1. Termux

Termux 是一款优秀的 Linux 命令行模拟器,同时也能使用 apt-get 来安装很多我们经常使用的包。

官网地址:https://termux.com

Termux 可以在 Play Store 中安装,官网首页也推荐使用 F-Droid 来安装,不过没工具的话网速随缘。

装好之后首先了解下 Termux 的操作及配置,可参考官方的Wiki。常用的快捷键如下:

之后可以给的 Termux 换成清华源,提升下载速度。清华源已经集成到 Termux 中,使用以下命令进行切换:

$ termux-change-repo

在图形界面引导下,使用自带方向键可上下移动。第一步使用空格选择需要更换的仓库,之后在第二步选择 TUNA/BFSU 镜像源。确认无误后回车,镜像源会自动完成更换。更换完成后使用 apt update 来检查更新。

2. Linux

最近 Termux 新增了官方的 Linux 安装器,使得安装简易程度和性能都有很大的提升。

此部分主要参考这篇文章,同样也可以参考官方 Wiki中关于 proot-distro 部分。

首先来安装 proot-distro:

$ apt install proot-distro

之后检查能安装的 Linux 系统及其名称:

$ proot-distro list

其中显示的 Alias 即为后续安装使用的名称,Status 表示该系统是否有安装。

挑选一个喜欢的系统,这里推荐 Ubuntu 和 Debian,都只有几十 Mb,非常小巧。使用以下命令来开始安装:

$ proot-distro install <alias>

安装后使用以下命令登录:

$ proot-distro login <alias>

使用 exit 可以退出 Linux 回到 Termux 系统。

安装好 Linux 系统之后,我们可以先来调教一下文件系统,方便安卓和 Linux 之间的文件传输。在 Termux 中执行:

$ termux-setup-storage

在弹出的权限请求中选择允许,这样你的 ~/ 根目录下会出现 storage 文件夹,其中包含指向安卓系统中多个常用文件夹的链接,其名称可能与安卓系统中的不同。具体参考这里。在 Termux 中执行 ls 可以看到:

这里我在安卓 Downloads 文件夹内建立了 workspacebackup 两个文件夹,一个作为 Jupyter 的工作目录,一个作为备份及文件传输目录。使用命令 proot-distro login <alias> 进入 Linux,在 Ubuntu / Debian 中,这两个文件夹位于

/data/data/com.termux/files/home/storage/downloads/workspace
/data/data/com.termux/files/home/storage/downloads/backup

为了后续使用方便,我们可以在 ~/ 目录下建立软连接:

$> cd ~
$> ln -s /data/data/com.termux/files/home/storage/downloads/workspace workspace
$> ln -s /data/data/com.termux/files/home/storage/downloads/backup backup

在 Linux 系统中 ls 可以看到:

最后,建议这里可以备份一下已经装好的 Linux 系统。使用 exit 退出 Linux 回到 Termux,可以使用 proot-distroproot-distro backup --help 查看帮助文档。执行以下命令进行备份:

$ proot-distro backup debian --output storage/downloads/backup/deb-date.bkp

大概花费 5 分钟左右完成备份,后续可以使用 proot-distro restore [FILENAME.TAR] 来恢复,具体可参考 --help 文档。

3. Python & Pip & Jupyter

进入 Linux 系统,在开始安装前最好确认下系统中是否已经有 Python:

$> whereis python
$> whereis python3

确认后可以使用 apt 来进行安装:

$> apt install python3

接下来安装 curl,一个 http 下载工具:

$> apt install curl

下载并安装 pip,参考 pip 文档

$> curl https://bootstrap.pypa.io/get-pip.py
$> python get-pip.py

安装 Jupyter notebook

$> pip install jupyter

在启动 Jupyter Notebook 之前,先进行配置,使用以下命令生成配置文件:

$> jupyter notebook --generate-config

使用 nano 或 vim 来编辑 ~/.jupyter/jupyter_notebook_config.py 文件,将启动目录设置为我们指定的位置,并允许使用 root 权限启动 botebook。具体为修改以下两行内容,并注意取消注释:

c.NotebookApp.notebook_dir = '/data/data/com.termux/files/home/storage/downloads/workspace'
c.NotebookApp.allow_root = True

保存退出(nano:ctrl+octrl+w;vim::wq),随后即可使用以下命令启动:

$> jupyter notebook

启动后根据控制台输出的本地地址,打开 Android 上的浏览器访问即可。

注意在启动后 Jupyter notebook 控制台独占 terminal 窗口,需要在后台启动可使用以下命令:

$> nohup jupyter notebook  > jnlog.file  2>&1 &

该命令将在后台启动 notebook,并将控制台输出到 jnlog.file 中。可以将此命令保存入脚本中,使用 source 命令启动脚本。

4. Octave & Octave_kernel

关于 Linux 上安装 Octave,可以参考官方wiki,同时建议参考这篇文章

关于 Octave_kernel 可以参考官方页面

直接在 Linux 系统使用 apt 安装 Octave:

$> apt install octave
$> apt install octave-control octave-image octave-io octave-optim octave-signal octave-statistics

安装后已经可以使用 octave 命令打开(画个图试试),之后可以使用 exit 退出到 Linux 系统。

使用 pip 安装 Octave_kernel,并初始化与验证:

$> pip install octave_kernel
$> python -m octave_kernel install --user
$> python -m octave_kernel.check

如果输出如上图,那么说明 Octav_kernel 已经安装成功,可以启动 Jupyter notebook 并在其中选择新建 Octave 文档了。跑一个线性回归试一下:

速度还是可以接受的。

如果你在 plot 时报错,可以尝试在第一行加入:

graphics_toolkit gnuplot;

一般可解决大部分 plot 问题。

自此你便获得了一个运行在 Linux 系统上的本地 Jupyter notebook,并包含了 Octave 语言支持。(爱奇艺启动器改造完成!)

5. Others

安装 Jupyter Lab

Jupyter Lab 相当于是 notebook 的高级版本,有成为成熟 IDE 的潜力(现在还不大行),具体可参考官方安装说明。其安装、配置、运行与 notebook 大体相同,不再赘述。

关于 Linux 换源

我本人在使用 debian 时网速并不慢,如有需要换源可参考这里

关于 git

我在 Linux 系统安装的 git 始终会报错,因此使用的是 Android 系统安装的 MGit 来管理仓库。

Logo

华为云1024程序员节送福利,参与活动赢单人4000元礼包,更有热门技术干货免费学习

更多推荐