我可以让 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
,然后打开它提供的包含 token 的 jupyter notebook 链接。当我打开一个新笔记本时,我希望看到这个黑色按钮,就像我直接在我的机器上安装这个包时看到的那样,但是当我按照我的描述从 docker 运行时,这个按钮不见了。
从简单的 docker 容器为 jupyter 笔记本启用黑色格式的最佳方法是什么?是否有我应该考虑的完全不同的库,或者只是安装和启用我已经在尝试的库的不同方式?
最佳答案
我想创建一个类似的设置。我将 Jupyter Labs 与 Jupyter Lab Code Formatter 一起使用,并将其配置为 Black。以下是我的基本步骤:
- Jupyter Docker Stacks提供了很多准备好的 Docker 镜像,我总是使用
jupyter/scipy-notebook
。 - 安装额外的库 Jupyter Lab Code Formatting和黑色
- 配置 Jupyter 实验室代码格式
- 添加 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"
有必要configure a default formatter for 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 -d
和 docker-compose down
),在您的主机上打开 http://localhost:8888/
并查看右侧最后一个按钮以格式化您的代码:
关于python - 如何在从 docker 容器运行的 jupyter notebooks 中获取黑色代码格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63318041/