3

我可以让 Jupyter 从 docker 容器中正常工作,甚至可以让 Jupyter 扩展在 docker 容器中工作(如果它们是jupyter_contrib_nbextensions的一部分) ,但我无法让jupyter-black扩展在 docker 容器中工作。

这就是我正在尝试的。我有一个Dockerfile看起来像这样的:

FROM python:3.8-slim-buster

WORKDIR /usr/src/app
RUN pip install black jupyter

# Jupyter black installation as mentioned at the bottom of
# https://github.com/drillan/jupyter-black

RUN jupyter nbextension install https://github.com/drillan/jupyter-black/archive/master.zip --user
RUN jupyter nbextension enable jupyter-black-master/jupyter-black

# Add Tini. Tini operates as a process subreaper for jupyter. This prevents
# kernel crashes.
ENV TINI_VERSION v0.6.0
ADD https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini /usr/bin/tini
RUN chmod +x /usr/bin/tini
ENTRYPOINT ["/usr/bin/tini", "--"]

EXPOSE 8888
CMD ["jupyter", "notebook", "--port=8888", "--no-browser", "--ip=0.0.0.0", "--allow-root"]

从与该目录相同的目录中Dockerfile,我运行docker build . -t myjupyter,然后docker run -p 8888:8888 -it --rm myjupyter,然后打开它提供的包含令牌的 jupyter notebook 链接。当我打开一个新笔记本时,我希望看到这个黑色按钮,当我直接在我的机器上安装这个包时会看到这个按钮,但是当我按照我的描述从 docker 运行时,那个按钮就不见了。

在此处输入图像描述

从简单的 docker 容器为 jupyter 笔记本启用黑色格式的最佳方法是什么?我应该考虑完全不同的库,还是只是安装和启用我已经尝试的库的不同方式?

4

1 回答 1

0

我想创建一个类似的设置。我将 Jupyter Labs 与 Jupyter Lab Code Formatter 一起使用,并将其配置为 Black。这是我的基本步骤:

  1. Jupyter Docker Stacks提供了很多准备好的 Docker 镜像,我总是使用jupyter/scipy-notebook.
  2. 安装额外的库Jupyter Lab Code Formatting和 Black
  3. 配置 Jupyter Lab 代码格式
  4. 添加 Docker Compose 以便于配置和运行

这是我的Dockerfile

FROM jupyter/scipy-notebook

RUN jupyter labextension install @ryantam626/jupyterlab_code_formatter && \
    pip install jupyterlab_code_formatter black && \
    jupyter serverextension enable --py jupyterlab_code_formatter

这是我的docker-compose.yml

version: '3'

services:
  jupyter:
    build: .
    volumes:
      - ./user-settings:/home/jovyan/.jupyter/lab/user-settings
      - .:/home/jovyan/work
    ports:
      - 8888:8888
    command: "start.sh jupyter lab --LabApp.token= --NotebookApp.notebook_dir=work"

需要为 Jupyter Lab Code Formatter 配置默认格式化程序。要保留此设置,请使用第一个卷。要么按照他们的文档中的说明通过 UI 进行配置,要么在您的主机上添加以下文件,该文件将被创建以更改设置:

user-settings/@ryantam626/jupyterlab_code_formatter/settings.jupyterlab-settings

{
     "preferences": {
        "default_formatter": {
            "python": ["black"]
        }
    }
}

user-settings当您可以运行的文件夹旁边有两个文件时docker-compose up(或docker-compose up -ddocker-compose down),http://localhost:8888/在您的主机上打开并查看右侧的最后一个按钮以格式化您的代码:

带有代码格式的 Jupyter Lab 工具栏

于 2020-10-03T11:54:09.450 回答