我有一个运行 Python/JupyterLab 和所有依赖项的容器。我开始:
docker run --rm -it -p 8888:8888 \
--mount type=bind,source=/project,target=/work \
python-3.9.1-jupyterlab
它启动 jupyterlab,我可以通过浏览器进行连接。万事皆安。
现在我正在尝试使用 VSCode 作为 Python IDE。将 VSCode 中的 shell 附加到我的容器会很有帮助,这样我就可以在一个地方运行 iPython 并编辑我的代码。我从 VSCode Docker 扩展运行“附加外壳”:
docker exec -it {containerID} bash <
然后我打开一个 iPython shell:
jo@:~/work $ ipython --pylab
Python 3.9.1
IPython 7.20.0 -- An enhanced Interactive Python.
Using matplotlib backend: agg
In [1]: matplotlib.get_backend()
Out[1]: 'agg'
In [2]: import matplotlib.pyplot as plt
In [3]: plt.plot([1.6, 2.7])
Out[3]: [<matplotlib.lines.Line2D at 0x7f5ed0ed8d30>]
In [4]: plt.show()
In [5]: %matplotlib inline
In [6]: plt.plot([1.6, 2.7])
Out[6]: [<matplotlib.lines.Line2D at 0x7f5ed0df5d60>]
<Figure size 432x288 with 1 Axes>
In [7]: plt.show()
我看不到任何情节。我试过用不同的后端渲染它们(默认是'agg')。我认为这是因为内核——在容器上执行——不能利用主机图形(即内核可以渲染绘图但不能显示它们)。也许我没有正确映射主机/容器端口。
有人可以就尝试的事情提供一些指导吗?这是我正在使用的容器的图像。