
# 在ModelArts的Notebook中内置引擎不满足使用需要时，如何自定义引擎IPython Kernel？
#### 使用场景
当前Notebook默认内置的引擎环境不能满足用户诉求，用户可以新建一个conda env按需搭建自己的环境。本小节以搭建一个"python3.6.5和tensorflow1.2.0"的IPython Kernel为例进行展示。
#### 操作步骤
1. 创建conda env。 在Notebook的Terminal中执行如下命令。其中，my-env是虚拟环境名称，用户可自定义。conda详细参数可参考[conda官网](https://conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html#creating-an-environment-with-commands)。
   ```
   conda create --quiet --yes -n my-env python=3.6.5
   ```
   创建完成后，执行**conda info --envs**命令查看现有的虚拟环境列表，可以看到my-env虚拟环境：
   ```
   sh-4.4$conda info --envs
   # conda environments:
   #
   base                  *  /home/ma-user/anaconda3
   TensorFlow-2.1           /home/ma-user/anaconda3/envs/TensorFlow-2.1
   my-env                   /home/ma-user/anaconda3/envs/my-env
   python-3.7.10            /home/ma-user/anaconda3/envs/python-3.7.10                  /opt/conda/envs/my-env
   ```
   
2. 执行如下命令进入conda env。
   ```
   source /home/ma-user/anaconda3/bin/activate /home/ma-user/anaconda3/envs/my-env
   ```
   
3. 执行如下命令在my env里安装如下依赖包。
   ```
   pip install ipykernel
   ```
   如果遇到版本冲突，建议固定版本如下：
   ```
   pip install jupyter_core==5.3.0 
   pip install jupyter_client==8.2.0 
   pip install ipython==8.10.0
   pip install ipykernel==6.23.1
   ```
   
4. 执行下述命令添加虚拟环境为IPython Kernel。 其中--name的值可自定义。
   ```
   python3 -m ipykernel install --user --name "my-py3-tensorflow-env"
   ```
   执行完毕后，可以看到下述提示信息。
   ```
   (my-env) sh-4.4$python3 -m ipykernel install --user --name "my-py3-tensorflow-env"
   Installed kernelspec my-py3-tensorflow-env in /home/ma-user/.local/share/jupyter/kernels/my-py3-tensorflow-env
   ```
   
5. 自定义虚拟环境Kernel的环境变量。 执行**cat /home/ma-user/.local/share/jupyter/kernels/my-py3-tensorflow-env/kernel.json**，可以看到默认配置如下：
   ```
   {
    "argv": [
     "/home/ma-user/anaconda3/envs/my-env/bin/python3",
     "-m",
     "ipykernel_launcher",
     "-f",
     "{connection_file}"
    ],
    "display_name": "my-py3-tensorflow-env",
    "language": "python"
   }
   ```
   （可选）按需添加env字段的值。以下示例中，PATH中增加了该虚拟环境Python包所在路径：
   ![](https://support.huaweicloud.com/modelarts_faq/public_sys-resources/note_3.0-zh-cn.png)
   以下配置仅供参考，请根据实际情况修改env字段内容。
   ```
   {
    "argv": [
     "/home/ma-user/anaconda3/envs/my-env/bin/python3",
     "-m",
     "ipykernel_launcher",
     "-f",
     "{connection_file}"
    ],
    "display_name": "my-py3-tensorflow-env",
    "language": "python",
    "env": {
         "PATH": "/home/ma-user/anaconda3/envs/my-env/bin:/opt/conda/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/ma-user/modelarts/ma-cli/bin",
         "http_proxy": "http://proxy-notebook.modelarts-dev-proxy.com:8083",
         "https_proxy": "http://proxy-notebook.modelarts-dev-proxy.com:8083",
         "ftp_proxy": "http://proxy-notebook.modelarts-dev-proxy.com:8083",
         "HTTP_PROXY": "http://proxy-notebook.modelarts-dev-proxy.com:8083",
         "HTTPS_PROXY": "http://proxy-notebook.modelarts-dev-proxy.com:8083",
         "FTP_PROXY": "http://proxy-notebook.modelarts-dev-proxy.com:8083"
    }
   }
   ```
   
6. 手动删除无效图标。
   ```
   rm -r /home/ma-user/.local/share/jupyter/kernels/my-py3-tensorflow-env/logo-*
   ```
   
7. 进入虚拟环境的IPython Kernel。 刷新JupyterLab页面，可以看到自定义的虚拟环境Kernel。如下所示：
   ![](https://support.huaweicloud.com/modelarts_faq/figure/zh-cn_image_0000001848811901.png "点击放大")
   单击my-py3-tensorflow-env图标，验证是否为当前环境，如下所示：
   ![](https://support.huaweicloud.com/modelarts_faq/figure/zh-cn_image_0000001802373366.png "点击放大")
   
8. 清理环境。 删除虚拟环境的IPython Kernel。
   ```
   jupyter kernelspec uninstall my-py3-tensorflow-env
   ```
   删除虚拟环境。
   ```
   conda env remove -n my-env
   ```
   
 
