});

Centos 7 MiniConda Jupyter Lab

jptlb_illustration

想用Jupyter lab的find and replace功能
升级jupyter lab却一直出现页面混乱
一怒之下回滚进度到conda安装前
直接重新安装MiniConda
且做好虚拟环境的配置

MiniConda的安装配置

清华镜像源下载MiniConda
https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/
sh <package.sh> 安装
安装后切记执行下述命令让配置生效

source /root/.bashrc

添加Anaconda仓库镜像源

国内采用清华tuna镜像源速度会快不少,以下内容在Terminal内进行

[root@your_server_name ~]# conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
[root@your_server_name ~]# conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
[root@your_server_name ~]# conda config --set show_channel_urls yes

删除默认源

conda config --remove-key channels

创建新的python环境

环境管理是Conda的一大亮点,可以很好的兼容不同的python版本
在虚拟环境中安装包也可以方便的实现不同包的管理
在terminal中用下述命令创建新的环境

# 创建环境
conda create -n your_env_name python=3.7

# 检查环境
conda env list

# 激活环境
source activate your_env_name
conda activate your_env_name

笔者测试时因为已经在/root文件夹下了,显示permission error
所以创建环境时要先转到/root以外的路径下

jupyter lab 安装并配置

# 安装jupyter lab
pip install jupyterlab

在Terminal中运行python 并生成密钥用于jupyter lab的配置

# 运行python编译器
ipython

# 编译器内输入
from notebook.auth import passwd
passwd()

# 根据指示输入密码并确认
# 复制生成的 'sha1: *' 密钥

# 生成jupyter lab 配置文件
jupyter lab --generate-config

# 打开上述命令返回的路径编辑文件
vim /root/.jupyter/jupyter_notebook_config.py

进入vim界面后的去掉几个关键命令的注释并修改

# 键入下述命令查找对应的语句
:/c.NotebookApp.ip

# 按“i”进入insert修改模式
# 去掉注释

参考上述操作,具体配置如下

有人都可以访问
c.NotebookApp.ip = '*'
# 这里的密码填写上面生成的密钥
c.NotebookApp.password = '密钥' 
# 禁止用host的浏览器打开jupyter
c.NotebookApp.open_browser = False 
# 打开jupyter lab的端口
c.NotebookApp.port = 88**
# 允许远程访问 
c.NotebookApp.allow_remote_access = True

jupyter lab创建载入虚拟环境

准备工作

# 检查更新conda
conda update conda

创建虚拟环境

# 检查现有虚拟环境
conda env list
# 或 
conda info -e

# 创建虚拟环境
conda create -n your_env_name python=x.x

# 安装包
conda install -n your_env_name [package]

# 卸载包
conda uninstall [package]
# 或
conda remove [package]

# 搜索包
conda search [package]

# 切换回base环境
source deactivate

# 删除虚拟环境
conda remove -n your_ev_name --all

虚拟环境内的准备工作

# 切换到要载入的虚拟环境下
conda activate your_env_name

# 安装 ipykernel
conda install ipykernel
# 也可用pip安装 -但尽量用conda,比较保险
pip install ipykernel

# 载入环境,display name不是必须的,仅为了自己好辨认
ipython kernel install --user --name your_env_name --display name "user_define_name"

新环境没有<Tab>代码提示

原理:Jupyter lab的基础是jupyter notebook,因此需要在新环境中安装notebook的相关插件 ‘nb_conda’ , 才能兼容 ipython 和 ipykernel,实现<Tab>提示代码

# 先进入新建的虚拟环境中
conda activate your_env_name

# 安装
conda install nb_conda

删除环境

# 列出所有已经载入虚拟环境
jupyter kernelspec list

# 卸载指定环境
jupyter kernelspec remove your_env_name

# 删除虚拟环境
conda remove -n your_env_name --all

环境重命名

# 简化命令形式
conda create -n conda-new --clone conda-old
# 完整的命令形式
conda create --name conda-new --clone conda-old

# 删除原环境
conda remove -n conda-old --all

自动载入conda环境

对于conda 创建的环境
参考nb_conda_kernels官方github页面:链接
首先在jupyter lab所在的环境下安装 nb_conda_kernels包

conda install -n notebook_env nb_conda_kernels

此后用conda 创建的新环境中只要安装了ipykernel就可以自动检测载入

conda install -n python_env ipykernel # python 环境
conda install -n r_env r-irkernel # R环境

启动jupyter lab

# 调试模式启动
jupyter lab

# 可以先进入一个路径下再用该命令
# 令生成文件保存在所进入的目录中
# 后台启动
nohup jupyter lab > jptlb.log 2>&1 &

nohup (no hang up)当账户退出或终端关闭时,程序仍然运行。
&:指如果客户端关闭,程序就会停止运行。
>log/lts.txt:指程序运行生成日志文件的存储位置,如果不指定,默认该项目所有输出被重定向到nohup.out的文件中。
dev/null 表示空设备文件
0 表示stdin标准输入
1 表示stdout标准输出
2 表示stderr标准错误 2>&1 就是表示将错误重定向输出到标准输出上

如果想用jupyter notebook,可用jupyter notebook启动,配置一样的

Add existing environment to new conda installation

Currently the most efficient way with minimal copying is add path to config by

conda config --append envs_dirs Z:/conda/envs_dirs

The

envs_dirs
is a parent directory, multiple environment can be added under it, for example, using

 conda create -p Z:/conda/envs_dirs/env

This method, however, would not allow conda activate by display name.
If the bash prefix

Z:/conda/envs_dirs/env
is too long, one can do {ref}

conda config --set env_prompt '({name}) '


Note this shoudl be done before creating the env at under the dir. My temp solution is to add a scripts for quick env start:

conda activate D:/YOUR_ENV_DIR

后记——远程访问

为了远程访问,还需要实现frp内网穿透。可以参考
吼吼, 已经用v2ray反向代理了。FRP是端口转发,一下就被探测为异常流量了。