原文:
www.kdnuggets.com/2020/04/dockerize-jupyter-visual-debugger.html
评论
作者:Manish Tiwari,数据爱好者
图片来源:Nilantha Ilangamuwa 来自 Unsplash
Jupyter 最近宣布了期待已久的可视化调试器的首次公开发布。尽管这是首次发布,但它支持调试和检查变量等所需的所有基本调试需求。
数据科学社区因 Jupyter Notebook 能够以互动的方式轻松传达和共享成果而大量依赖它。
然而,唯一的问题是缺少可视化调试能力,因此人们通常需要切换到其他提供更好调试和代码重构功能的经典 IDE。这一功能受到数据科学社区的高度期待,现在终于发布了。
如需简要了解可视化调试器的实际效果,请参考下面的视频演示:
在本文中,我们将详细讲解在现有 JupyterLab 环境中设置可视化调试器的步骤,并将 JupyterLab 环境与默认启用的可视化调试器进行容器化。
JupyterLab 2.0+
对任何编程语言的调试基础知识
Docker 的基础知识。
假设您已经在使用 JupyterLab,只需安装 JupyterLab 调试器扩展以进行前端调试,以及在后端支持 Jupyter 调试协议的任何内核。
JupyterLab 使用 nodejs 安装扩展,因此我们需要先安装 nodejs 才能安装前端调试器扩展。
在未来的版本中,Jupyter 可能会默认包含此扩展。
conda install -c conda-forge nodejs
jupyter labextension install @jupyterlab/debugger
目前,后端只有 xeus-python 支持 Jupyter 调试协议。未来可能会有更多内核支持该协议。
conda install xeus-python -c conda-forge
现在如果运行 Jupyter Lab,您应该能够看到 xeus-python 内核在控制台和笔记本部分各有 2 个附加图标。
容器使得跨多个环境的开发更加顺畅。这就是它们成为云原生应用交付方法技术基础的原因。
Docker 创始人 Solomon Hykes 说,当支持软件环境不一致时会出现问题。“你会在 Python 2.7 上测试,然后它会在生产环境中运行 Python 3,结果会发生一些奇怪的事情。或者你依赖某个 SSL 库的特定版本,而安装了另一个版本。你会在 Debian 上运行测试,而生产环境在 Red Hat 上,一切都可能变得很奇怪。”
容器通过将运行应用程序所需的环境、依赖项、二进制文件、所有必要的配置和应用程序本身打包到一个包中来解决此问题。这样,我们不再需要担心操作系统和其他环境特定的依赖项,因为一切都被打包在一个可以在任何地方运行的独立实体中。
我假设你对基本的 Docker 命令和术语已经很熟悉。解释 Docker 的工作原理超出了本文的范围。然而,如果你觉得需要复习,请参考 Docker 文档。
现在我们将创建创建所需环境 Docker 镜像所需的 Dockerfile。你可以将镜像视为包含所有必要指令的文件,用于在容器中运行我们的应用程序。
我们将使用 Miniconda,一个用于 Anaconda 的轻量级最小化安装程序。它是 Anaconda 的一个小型启动版本,只包含 conda、Python、它们所依赖的包和少量其他有用的包。
FROM continuumio/miniconda3
定义 Docker 文件和工作目录的元数据:
LABEL maintainer=”Manish Tiwari <m***@gmail.com>”
LABEL version=”0.1"
LABEL description=”Debugging Jupyter Notebook”WORKDIR /jup
安装 JupyterLab
RUN conda install -c conda-forge jupyterlab
安装用于前端调试的 nodejs 和 labextension。
RUN conda install -c conda-forge nodejs
RUN jupyter labextension install [@jupyterlab/debugger](https://twitter.com/jupyterlab/debugger)
安装支持 Jupyter 调试协议的内核。
RUN conda install xeus-python -c conda-forge
**注意:**这里我们使用了 conda 包管理器,你也可以使用 pip,但不推荐同时使用这两者,因为这可能会破坏环境。
最后,暴露端口并定义入口点。
EXPOSE 8888
ENTRYPOINT [“jupyter”, “lab”,” — ip=0.0.0.0",” — allow-root”]
我们最终的 Dockerfile 应如下所示:
启用 Visual Debugger 的 JupyterLab Docker 化
导航到包含上述 Dockerfile 的文件夹,然后运行以下命令。
docker build -t visualdebugger .
另外,你也可以从任何地方运行命令,只需提供 Dockerfile 的绝对路径。
一旦镜像成功构建,使用以下命令列出 Docker 镜像以进行验证。
docker image ls
输出应如下所示:
现在在新容器中运行 Docker 镜像,如下所示:
docker container run -p 8888:8888 visualdebugger-jupyter
在这里,我们将主机端口(冒号前的第一个端口)8888 映射到容器中暴露的端口 8888。这是主机与容器内的 Jupiter 监听端口进行通信所必需的。
运行上述命令后,你应该看到如下输出(前提是端口未被其他进程占用):
这意味着我们的 docker 容器正在运行。你现在可以打开上面指定的 URL,并使用 Jupyter 和可视化调试器,而不需要意识到它并未在主机上运行。
你还可以通过以下命令查看可用的容器列表:
docker container ls
上面的命令应该会列出容器及其元数据,如下所示:
一旦你打开上面输出的 URL,你应该能看到 JupyterLab 在主机的 localhost 和 8888 端口上运行。
在容器中运行的带有可视化调试器的 JupyterLab
现在,要使用可视化调试器,请在 Launcher 中打开xpython,而不是 Python。
我已经在 docker hub 上发布了我们刚刚构建的 docker 镜像,以便你获得一个带有可视化调试功能的 Jupyter 环境。
你可以通过以下命令拉取 docker 镜像并进行操作。
docker pull beingmanish/visualdebugger-jupyter
如果你希望深入了解 Jupyter 的可视化调试架构,可以参考这里。
有建议或问题吗?请在评论中写下。
参考文献: Jupyter 博客
个人简介: Manish Tiwari 是一位数据爱好者,热衷于分享 AI 领域的学习和经验。
原文。转载经许可。
相关:
-
4 个最佳 Jupyter Notebook 深度学习环境
-
5 个 Google Colaboratory 小贴士
-
GitHub Python 数据科学焦点:高级机器学习与 NLP,集成方法,命令行可视化与 Docker 简化