comments
作者 Manish Tiwari,数据爱好者
照片由 Nilantha Ilangamuwa 提供,来源于 Unsplash
Jupyter 最近宣布了其首次公开发布备受期待的可视化调试器。虽然这是第一次发布,但它支持所有基本的调试需求,如调试和检查变量等。
数据科学社区非常依赖 Jupyter Notebooks,因为它能够以互动的方式轻松地沟通和共享结果。
然而,唯一的问题是缺少可视化调试能力,这使得人们通常不得不转向其他提供更好调试和代码重构功能的传统 IDE。这一功能在数据科学社区中一直备受期待,现在终于发布了。
要快速了解可视化调试器的实际效果,请参见下面的屏幕录制:
在这篇文章中,我们将介绍在现有 JupyterLab 环境中设置可视化调试器所需的步骤,并将 JupyterLab 环境以启用可视化调试器为默认设置进行 Docker 化。
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,你应该能够看到 2 个额外的图标,每个图标分别位于控制台和笔记本部分,针对 xeus-python 内核。
容器使在多个环境中进行开发更加顺畅。这也是它们成为云原生应用交付方法的技术基础的原因。
Docker 创始人 Solomon Hykes 说,当支持的软件环境不相同时,就会出现问题。“你可能会用 Python 2.7 进行测试,然后它在生产环境中运行 Python 3,结果会发生一些奇怪的事。或者你依赖某个 SSL 库的特定版本,而安装的是另一个版本。你在 Debian 上运行测试,而生产环境在 Red Hat 上,这样就会出现各种奇怪的问题。”
容器通过将运行应用程序所需的环境、依赖项、二进制文件、所有必要的配置和应用程序本身打包成一个包来解决这个问题。这样,我们不再需要担心操作系统和其他特定环境的依赖项,因为一切都被打包成一个可以在任何地方运行的独立实体。
我假设你已经熟悉基本的 Docker 命令和术语。解释 Docker 的工作原理超出了本文的范围。然而,如果你觉得需要重新学习,请参阅 Docker 的 文档。
现在我们将创建需要的 Dockerfile 以生成所需环境的 Docker 镜像。你可以把镜像看作是包含所有在容器中运行应用所需指令的文件。
我们将使用 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 带有可视化调试器
现在要尝试可视化调试器,请在启动器中选择显示为 xpython 的 Notebook 或 Console,而不是 Python。
我已将我们刚刚构建的 Docker 镜像发布到 docker hub,以防你需要一个带有启用可视化调试的 Jupyter 准备好使用的环境。
你可以使用以下命令拉取 Docker 镜像并进行尝试。
docker pull beingmanish/visualdebugger-jupyter
如果你希望深入了解 Jupyter 的可视化调试架构,你可以参考这里。
有建议或问题?请在评论中写下。
参考资料: Jupyter 博客
个人简介:Manish Tiwari 是一位对分享 AI 领域学习和经验充满热情的数据爱好者。
原文。经许可转载。
相关内容:
-
深度学习的 4 个最佳 Jupyter Notebook 环境
-
5 个 Google Colaboratory 提示
-
GitHub Python 数据科学亮点:高级机器学习与 NLP、集成、命令行可视化和 Docker 简化