Jef*_*eff 6 matplotlib ipython docker visual-studio-code jupyter-console
我有一个运行 Python/JupyterLab 和我所有依赖项的容器。我从以下开始:
docker run --rm -it -p 8888:8888 \
--mount type=bind,source=/project,target=/work \
python-3.9.1-jupyterlab
Run Code Online (Sandbox Code Playgroud)
它启动 jupyterlab,我可以通过浏览器连接。一切都很好。
现在我正在尝试使用 VSCode 作为 Python IDE。将 VSCode 中的 shell 附加到我的容器很有帮助,这样我就可以在一个地方运行 iPython 并编辑我的代码。我从 VSCode Docker 扩展运行“附加外壳”:
docker exec -it {containerID} bash <
Run Code Online (Sandbox Code Playgroud)
然后我打开一个 iPython shell:
docker exec -it {containerID} bash <
Run Code Online (Sandbox Code Playgroud)
我看不到任何情节。我试过用不同的后端渲染它们(默认是“agg”)。我认为这是因为内核 - 在容器上执行 - 无法使用主机图形(即,内核可以渲染绘图但无法显示它们)。也许我没有正确映射主机/容器端口。
有人可以就尝试的事情提供一些指导吗?这是我正在使用的容器的图像。
您正在 shell 中运行 jupyterlab,这不是图形环境。此外,如果您从非 X11 桌面运行 Docker 容器,则不会设置 DISPLAY 变量(X11 用于显示图形)。如果您从 Linux 桌面运行它,您可以将环境设置为允许 X11,如本示例所示,但并非所有环境都相同,您可能需要进一步研究如何设置特定环境以允许来自 docker 的 X11 服务器容器与主机上的 X11 客户端通信(注意,在 X11 中,应用程序是server,桌面是client)
在 Linux 上,如果未设置环境变量 DISPLAY,“事件循环”将被识别为“无头”,这会导致回退到非交互式后端 (agg)。您可以在 matplotlib文档中阅读有关后端以及如何选择它们的更多信息。一旦“偶循环”设置为“无头”,所有渲染都将在文件中完成。您可以检查此答案,了解如何将 mahtplotlib 与此后端一起使用。
使用 Jupyther 和 VSCode 的好处的一个好方法是使用 VSCode 的扩展。最流行的扩展之一是 Microsoft 开发的jupyter 。该扩展将使您拥有与使用浏览器相同的体验。
| 归档时间: |
|
| 查看次数: |
219 次 |
| 最近记录: |