最近遇到需要搭建 Miniconda 环境的工作,第一眼看到这个词有点眼熟,第一印象就是 Anaconda 的阉割版,果不其然,这就是一个轻量化的 Anaconda。
序. Miniconda 与 Anaconda 的区别
Miniconda 是最小的 conda 安装环境,里面只包含了 conda、python、和一些必备的软件工具,将一切不必要的环境全部不安装。使的它与 Anaconda 最大的区别就是它只有两位数 MB 的大小,而 Anaconda 是占有三位数 MB 大小的庞大环境,实际使用的时候有很多安装包是不需要的。当然直接装 Anaconda 就能使用了,装 Miniconda 的话还要进一步下载安装第三方依赖包。
例如,在 Anaconda 是自带安装了 jupyter notebook,而在 Miniconda 中是需要自己手动安装一下 jupyter 才能支持。
Miniconda 是 Anaconda 轻量化环境,可以理解为精简版 Anaconda;Anaconda 是 Miniconda 的扩展,主要向数据处理的方向,包含了数据科学和机器学习要用到的很多第三方依赖(如:scipy 等),以及所需要的软件(如:jupyter notebook、CUDA env. 等)。
一. 安装 Miniconda
Miniconda 下载地址:https://docs.conda.io/en/latest/miniconda.html
根据系统和所需要的 python 版本下载对应的 Miniconda 安装包即可,这里介绍的是 Linux 的安装方式,采用经典 bash 运行安装方法。
例如:需要在 Linux 中安装包含 Python 3.8 版本的 Miniconda,下载如图的 Miniconda3 Linux 64-bit 即可。运行 & 安装:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
# 若没有可运行权限,给予可运行权限 user@ubuntu:~$ chmod +x Miniconda3-latest-Linux-x86_64.sh # 运行安装 Miniconda user@ubuntu:~$ ./Miniconda3-latest-Linux_x86_64.sh # 无脑确认安装即可,默认安装路径是家目录 # /home/user/miniconda3 # 也会自动将环境路径导入 .bashrc 文件中 # 要么重连会话 要么用以下指令刷新环境 user@ubuntu:~$ source ~/.bashrc (base) user@ubuntu:~$ # 出现了(base)就说明环境已经导入了,可以使用Miniconda环境的Python啦~ |
EX. 在 Miniconda 中搭建 Jupyter 服务
除了 Miniconda 的能轻量化了 Anaconda,更有效的利用了服务器环境之外,在 Conda 环境下搭建 Jupyter 使用户方便的通过浏览器远程编辑 Python 程序成为了可能。
安装 Jupyter(先看看别操作,安装部分用jupyterlab的)
这个软件的本质是 python 的第三方依赖包,所以使用 conda 或者 pip 安装即可:
1 2 |
# 在Conda环境 联网的环境下 (base) user@ubuntu:~$ conda install ipython jupyter |
安装完毕,是不是超级简单!
运行指令:
1 |
(base) user@ubuntu:~$ jupyter notebook |
因为这里的 jupyter 是依靠 Miniconda 的,Miniconda 是安装在家目录下的,所以用户拥有完全控制权,所以不需要管理员权限就可以直接运行。
配置 Jupyter
生成配置文件
1 |
(base) user@ubuntu:~$ jupyter notebook --generate-config |
配置文件默认会生成在~/.jupyter/jupyter_notebook_config.py
下一步先打开 ipython,如下操作生成密钥
1 2 3 4 5 6 7 8 9 10 11 12 13 |
(base) user@ubuntu:~$ ipython Python 3.8.5 (default, Sep 4 2020, 07:30:14) Type 'copyright', 'credits' or 'license' for more information IPython 7.19.0 -- An enhanced Interactive Python. Type '?' for help. In [1]: from notebook.auth import passwd In [2]: passwd() Enter password: Verify password: Out[2]: 'argon2:$argon2id$v=19$m=10240,t=10,p=8$7moItZ47QSMU3BpL/ut5aA$PrB9vZFAAP0Ugvi9OJrqKg' In [3]: exit() |
然后编辑配置文件~/.jupyter/jupyter_notebook_config.py
1 2 3 4 5 6 7 |
(base) user@ubuntu:~$ vim ~/.jupyter/jupyter_notebook_config.py # 找到下面的字段,并修改 c.NotebookApp.ip = '*' c.NotebookApp.open_browser = False # 禁止自动打开浏览器 c.NotebookApp.password = u'argon2:$argon...' # 复制刚才python中生成的密文 c.NotebookApp.port = 8889 # 指定一个端口,默认是8888 |
远程登录设置 Jupyter
这一步是在服务器上开启 jupyter 服务:
1 2 3 4 5 6 7 8 9 |
(base) user@ubuntu:~$ jupyter notebook [W 18:15:18.808 NotebookApp] WARNING: The notebook server is listening on all IP addresses and not using encryption. This is not recommended. [I 18:15:18.840 NotebookApp] [jupyter_nbextensions_configurator] enabled 0.4.1 [I 18:15:18.956 NotebookApp] JupyterLab extension loaded from /home/futuremedia/miniconda3/lib/python3.8/site-packages/jupyterlab [I 18:15:18.956 NotebookApp] JupyterLab application directory is /home/futuremedia/miniconda3/share/jupyter/lab [I 18:15:18.961 NotebookApp] Serving notebooks from local directory: /home/futuremedia [I 18:15:18.962 NotebookApp] Jupyter Notebook 6.1.4 is running at: [I 18:15:18.962 NotebookApp] http://ubuntu:8889/ [I 18:15:18.962 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation). |
一般没问题的话就会开启成功,反馈如上面所示类似。
然后在另一台普通联网电脑上打 http://IP:8889 就行。
JupyterLAB
普通的 jupyter 一点都不好用,就算实现了远程浏览器访问,但界面并不友好,JupyterLab 相比较 Jupyter 来说,它是进一步封装过的,会好用很多。
安装:
1 |
(base) user@ubuntu:~$ pip install jupyterlab |
配置部分和运行服务的操作与上面一样。
调至后台运行的方法
这部分结合服务器使用即可,使用服务器后台运行的各种方法运行 jupyter notebook 就可以了,例:
1 2 3 |
# 使用nohup的方法 # 并用jupyter.log这个文件保存交互日志 用tail head等指令来查看 (base) user@ubuntu:~$ nohup jupyter notebook --allow-root > jupyter.log 2>&1 & |